OnRender(DrawingContext drawingContext)C#

时间:2011-07-18 17:17:11

标签: c# multithreading

我在C#中的Adorner类中重写OnRender(DrawingContext drawingContext)

在这个方法中,我试图绘制存储在imageCache Dictionary中的图像。 问题是OnRender方法在将我的图像存储在字典中的Thread完成之前被调用。

我尝试使用Thread.Sleep(60),但是我的程序非常慢。

你们能否告诉我如何能够绕过这个问题。

谢谢。

2 个答案:

答案 0 :(得分:1)

您是否将字典中存储的图像运行一次?如果是这样,我建议您在OnRender中不执行任何操作,直到图像存储线程结束。

但是如果你的图像存储线程为每个渲染或经常运行,你可能需要实现一些thread syncronization(你也需要它来解决第一种情况)。例如,您可以引用带有旧图像的字典进行渲染,然后在工作线程构建新字典后,您可以使用lock并为该引用分配新字典。

(这就是我可以用很少的输入建议的所有内容)

答案 1 :(得分:0)

您可以使用Mutex锁定和同步线程。

private static Mutex mut = new Mutex();

然后您可以使用

锁定并释放所需的方法
mut.WaitOne();
mut.ReleaseMutex();

这是MSDN教程。