首页 / C# / c# – 我的部分GUI很慢
c# – 我的部分GUI很慢
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 我的部分GUI很慢,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2391字,纯文字阅读大概需要4分钟。
内容图文
![c# – 我的部分GUI很慢](/upload/InfoBanner/zyjiaocheng/767/1aa13c7a98b74b239a9251eb00a7b2bd.jpg)
我的GUI遇到了问题.
我的GUI中有多个部分.
第一个用于图像(从500×500到3000×3000,每秒最多更新4次)
第二个是主菜单
第三个按钮具有关于图像的选项.我没有立刻显示所有这些,我滚动浏览几个菜单,我只渲染那些可见的菜单. (otpions的一个例子是图像的像素大小)
我在一个800x800px大的Viewbox中显示图像.我用Stretch =“{Binding Path = StretchMode}”拉伸盒子里面的图像
我得到的图像是某种流.我每秒都会得到多张图像.
现在,当我显示图像时,第一个GUI部分工作正常(无论图像大小如何),但其他部分有时会有一个沉重的framedrop.我举几个例子:
例1:
图像大500×500像素.我可以在没有framedrop的情况下工作,整个gui更新正确.
例2:
图像大小为1500×1500像素.我可以在没有Framedrop的情况下工作,整个gui更新正确.
例3:
图像大小为2500×2500像素.图像更新速度很快,但GUI的其余部分的帧速率从60 fps到fps,有时甚至达到1 fps.
我对这个问题的看法是:
>硬件已达到极限.但是Visual Studio的Taskmanager和CPU / RAM分析表明它是好的.
>渲染GUI太多了,因为3000×3000很大,每秒4次也不慢.在加载测试(我从硬盘驱动器加载它们)3000×3000图像(相同数据类型)后,它工作得很快,没有问题.
>一次性更改GUI太多.我只用了5次更新就试用了这个软件.仍然是同样的问题.
>未发生Microsoft Prism事件.这不是因为它进入控制器内部并且如果有变化则提升变化. (我有一个记录器,它写入日志文件,它提升了更改事件,而不是GUI正在改变)
>使用不同的数据类型.可能,但我尝试了几个. (BitmapSource,BitmapImage和WriteableBitmap)
>在另一个线程中外包一些渲染选项.仍然没有变化.
我希望你能给我一些想法,为什么GUI有这种行为.
如果您需要代码,请告诉我.
我没有使用VM.
在Windows 7 64位和Windows 8.1 64位上出现此问题(在Windows 10上不是testet)
我的硬件不同.问题出现在我的笔记本电脑上(Intel i7-4702MQ @ 2.2 Ghz,8 gb ddr ram,英特尔主板显卡)和不同规格的workpc(最高的是:Intel Xeon 3.5 Ghz,128 GB DDR4 Ram和Titan X和一个4k监视器)
解决方法:
编辑:道歉,堆栈没有我的分数高到足以评论,所以评论 – 这里的内容相反.
编辑1:进程资源管理器(来自Sysinternals)应该被用作一个低悬的水果,看看什么(如果有的话)视频资源有高消费.进程资源管理器中有一个选项卡/区域用于查看图形资源.在进程资源管理器中,您可以执行“选择列”并添加GPU资源以便于查看.尝试是一个很好的角度.
我想冒昧地猜测我们正在处理一个问题
带有DPC数据的ETW跟踪可能会有所帮助.此外,您没有提到您是否在VM中,VM会使任务管理器反映CPU上的资源消耗不准确.
如何收集此类跟踪的示例如下:https://blogs.technet.microsoft.com/jeff_stokes/2012/09/18/how-to-collect-a-trace-for-audio-or-video-problems-in-windows-7/
无论如何,我怀疑你正在研究内核驱动程序或IPC / DPC问题,而不仅仅是原始CPU消耗.我认为需要提供更多数据. (硬件规格,使用的操作系统,VM /不).
内容总结
以上是互联网集市为您收集整理的c# – 我的部分GUI很慢全部内容,希望文章能够帮你解决c# – 我的部分GUI很慢所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。