Closed bigsinger closed 1 year ago
真的有人用logcat欸 不过这里有一个用来读logcat的方法
AdbClient.RunLogService(DeviceData device, Action<LogEntry> messageSink, params LogId[] logNames);
虽然不知道能不能用
我上面的代码也能用的,就是速度有点慢。
所以速度有多慢。。。
logcat
哈哈 还好你没说:真的有人用C#。。。
所以速度有多慢。。。
没定量测试过,这个不着急,如果你们看这块的话就做下性能优化,目前logcat用的少,只是想起来了就提一下。
我害怕是我瞎改异步导致的变慢。。。
我害怕是我瞎改异步导致的变慢。。。
不会,我这个问题应该很早了。不是才发生的,我是看到这个三方库有升级,觉得有人维护了,才反馈的。最近新的版本感觉快些了。
你和adb本体的速度比较一下,如果本体快但是这个轮子慢的话就是通信的问题了。。。
你和adb本体的速度比较一下,如果本体快但是这个轮子慢的话就是通信的问题了。。。
测了下。不稳定,有时候十秒读完,有时候几十秒,有时候一分多钟
找到原因了,是c# ui的bug,已解决,速度很快了。
额。。。
@wherewhere
原因:logcat捕获到的日志信息显示在c#的ui控件textbox上,这个控件有bug(包括RichTextBox),添加文本后默认自动滚动到底部,而且无法修改不自动滚动。
解决办法:经过点击测试发现,当控件失去焦点时控件就不会滚动了,日志瞬间获取完成。于是参考 https://www.codeproject.com/Articles/361161/How-to-Csharp-Prevent-RichTextBox-from-auto-scroll 实现让控件不获取焦点从而达到不自动滚动的效果。
真是坑啊,如果有更好的方法,也可以推荐。
不应该是异步获取日志,然后异步显示到UI吗,之前只知道后台阻塞UI,第一次听说UI阻塞后台。。。
不应该是异步获取日志,然后异步显示到UI吗,之前只知道后台阻塞UI,第一次听说UI阻塞后台。。。
是异步。 它每次都自动滚动,这个自动滚动会影响效率,大量的自动滚动就会影响性能了。
终端也是自动滚动,滚慢点就当动画了。。。
终端也是自动滚动,滚慢点就当动画了。。。
控制台跟UI不太一样。 UI的话也可以用一些技巧,例如每秒自动滚动一次,这样也不会影响效率。
终端输出大量文本的时候也很慢,建议迁移到XAML世界,WinForm性能很差的
终端输出大量文本的时候也很慢,建议迁移到XAML世界,WinForm性能很差的
WPF么,也用的。开发小工具就winform最快(开发效率),拖拖拽拽点点,几分钟就搞定了。
XAML写习惯了布局起来更快,WinForm不支持自适应,弄出来的奇奇怪怪的,而且因为本体是win32控件所以要各种和win32交互,太麻烦了 (实际上我想说的是UWP
Describe the bug
Here is the code:
AdbShellLogcatReceiver
is a class that receives callback logs and echoes them:It takes a long time to obtain and display the logs. How can I improve it?
Steps to reproduce the bug
Refer to the code above
Expected behavior
No response
Screenshots
No response
NuGet package version
2.5.7
.NET Platform
.NET 7
Platform type
No response
System version
No response
IDE
No response
Additional context
No response