我在C#中的Adorner类中重写OnRender(DrawingContext drawingContext)
在这个方法中,我试图绘制存储在imageCache Dictionary中的图像。 问题是OnRender方法在将我的图像存储在字典中的Thread完成之前被调用。
我尝试使用Thread.Sleep(60),但是我的程序非常慢。
你们能否告诉我如何能够绕过这个问题。
谢谢。
答案 0 :(得分:1)
您是否将字典中存储的图像运行一次?如果是这样,我建议您在OnRender
中不执行任何操作,直到图像存储线程结束。
但是如果你的图像存储线程为每个渲染或经常运行,你可能需要实现一些thread syncronization(你也需要它来解决第一种情况)。例如,您可以引用带有旧图像的字典进行渲染,然后在工作线程构建新字典后,您可以使用lock
并为该引用分配新字典。
(这就是我可以用很少的输入建议的所有内容)
答案 1 :(得分:0)
您可以使用Mutex锁定和同步线程。
private static Mutex mut = new Mutex();
然后您可以使用
锁定并释放所需的方法mut.WaitOne();
mut.ReleaseMutex();
这是MSDN教程。