非调试模式下的线程使用和绘图问题

时间:2015-01-05 08:13:34

标签: c# multithreading debugging drawing visual-studio-debugging

我正在使用Visual Studio 2012,用c#编写。我的程序有一个在后台运行的采集线程。它是这样的:

线程内部:

public void myAcquisitionTask(object o)
{
    while(ThreadAlive)
    {
        // Collect data
        System.Threading.Thread.Sleep(100);
    }
}

并致电:

Thread myThread;
myThread.start(data);

在我的GUI中,我有一个可点击的按钮,在点击时可以绘制一些数据(作为Graphics对象)。它基本上是一些线,但有很多线(约50000)。绘图如下:

private void btnDisplaySavedData_Click(object sender, EventArgs e)
{
    Graphics graphicsObj = myDisplay.CreateGraphics();

    // Do for multiple lines
    graphicsObj.DrawLine(pen, startpt, endpt);

    graphicsObj.Dispose();
}

我意识到当线程正在运行时,Graphics对象将会绘制;但正如绘图完成时一样,它将是erased

有趣的是,此行为仅在非调试模式(Visual Studio中的ctrl-f5)中发生,并且从不在调试模式下。另外,我意识到如果我不在非调试模式下调用myThread.start(),绘图也可以。

这让我相信线程和绘图之间存在关系。有谁知道可能的原因是什么?

0 个答案:

没有答案