private void DisplayThread()
{
while (RunDisplayThread)
{
Thread.Sleep(30);
MPLastMessage.Text = MPTemplate.MPRET[(int)MP.MPReturn];
Invoked();
TickCount++;
TickCountLabel.Text = string.Format("Tick Count: {0}", TickCount);
}
}
private void Invoked()
{
while (MP.Drawing) { };
g.DrawImage(MP.offscreen, 50, this.Height-300);
}
所以,这可行,但在阅读之后,
Draw image on a form from a separate thread
我显然是以一种不那么聪明的方式做到这一点。任何人都可以解释建议的答案与我正在做的事情之间的区别吗?我一直在教自己C#,我对这个答案的工作原理感到茫然。
答案 0 :(得分:0)
虽然您提供的链接被命名为“从单独的线程中绘制(...)”,但绘图本身仍然在Gui线程上使用Control.Invoke()
(http://msdn.microsoft.com/en-us/library/zyzhdc6b.aspx)。
您的Invoked()
方法在“DisplayThread”上运行。我不知道g
变量来自哪里,这是一个在OnPaint
方法中设置的类变量吗?如果这样,DrawImage
如果比OnPaint
中的代码花费更多时间则会失败。