![]() |
1
0
似乎gdi+api中存在一些全局锁。对于测试,我基于以下函数创建了两个线程 static void test_thread() { Bitmap bmp = new Bitmap( 4000, 4000 ); Graphics g = Graphics.FromImage( bmp ); Brush b = Brushes.Red ; for ( ; ; ) { g.FillRectangle( b, 0, 0, bmp.Width, bmp.Height ); } } 如果无限循环的ben为空,则CPU使用率超过90%,因此它们使用了我的CPU的两个核心。在FillRectangle存在的情况下,用法略低于50%,表示一次只能运行一个线程。 因此,在缩放过程中,从GUI线程执行的任何GDI+调用都可能会阻塞,直到缩放完成。 |
![]() |
2
0
我怀疑由于扩展使用了所有的CPU,所以用户界面陷入了困境。两个线程的优先级可能相同。 尝试降低缩放线程的优先级以允许用户界面响应。
|
![]() |
3
0
你的imagescalled()是如何将图像复制回用户界面的? |
![]() |
4
0
试着用这个来代替。
替代方案 -使用异步模式。
然后调用beginscaleImage异步运行它。 编辑 -请参阅上面的更正。endscaleImage上的ar参数应声明为byRef,并且还应声明beginscaleImage的img参数。没有理由让他们过关!! |
![]() |
user107586 · 如何处理等待句柄不会导致无限循环? 6 月前 |
![]() |
ron burgundy · 获取-释放语义是否跨线程传递?[副本] 6 月前 |
![]() |
BenjiFB · C#内存缓存:在一次操作中追加到列表? 6 月前 |
![]() |
András Takács · Python多线程问题 10 月前 |
|
András Takács · Python多线程错误 10 月前 |