【发布时间】:2013-07-09 13:21:23
【问题描述】:
我正在尝试让它在我单击按钮时刷新我的表单。但是我不断收到错误
'跨线程操作无效:控件'Form1'从一个 线程不是创建它的线程。'
private void button1_Click(object sender, EventArgs e)
{
worker.DoWork += formReload;
worker.RunWorkerAsync();
}
static BackgroundWorker worker = new BackgroundWorker();
private void formReload(object sender, DoWorkEventArgs ev)
{
this.Refresh();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
}
我试图研究它,我知道我必须使用 Invoke 方法,但是我不明白把它放在哪里,为什么要使用它?任何帮助将不胜感激!
谢谢, 贾罗德
【问题讨论】:
-
贴一些DoWork的代码,你必须把它放到那个方法中。
-
将刷新从
bg_DoWork移动到bg_runworkercompleted -
你可以先用谷歌搜索错误信息...
-
您好,感谢您的快速回复。我在 DoWork 中什么都没有,所以我发布了 this.Refresh();在那里,但是现在没有错误,但它也不起作用。我的代码中有一个变量,在 form_load 中有一个 switch case,所以如果变量 = 1,那么执行 case 1 中的代码。
标签: c# backgroundworker invoke