我有一个WinForms应用程序,问题与线程有关。因为我调用了'MyCustomCode()'来创建一个新的线程,并调用了方法'SomeMethod()',然后访问MessageBox.Show(...)。
问题与线程有关,因为新创建的线程试图访问在另一个线程上创建的控件。
我收到以下错误消息:
跨线程操作无效: 从非创建控件的线程访问控件'TestForm'。
问题与线程有关,因为新创建的线程试图访问在另一个线程上创建的控件。
我收到以下错误消息:
跨线程操作无效: 从非创建控件的线程访问控件'TestForm'。
public TestForm()
{
InitializeComponent();
// custom code
//
MyCustomCode();
}
public void SomeMethod()
{
// ***** This causes an error ****
MessageBox.Show(this,
ex.Message,
"Error",
MessageBoxButtons.OK,
MessageBoxIcon.Error
);
}
private void InitializeAutoUpdater()
{
// Seperate thread is spun to keep polling for updates
ThreadStart ts = new ThreadStart(SomeMethod);
pollThread = new Thread(ts);
pollThread.Start();
}
更新
如果你看一下这个例子 http://www.codeproject.com/KB/cs/vanillaupdaterblock.aspx,方法CheckAndUpdate中调用了MessageBox.Show(..),这就是我的问题所在。我本以为代码可以正常运行!
有趣的事情是这段代码上星期五还能够正常工作???