BackgroundWorker-表单刷新
本文关键字:刷新 表单 BackgroundWorker- | 更新日期: 2023-09-27 18:21:35
我正试图让它在单击按钮时刷新我的表单。然而,我不断得到一个错误
'跨线程操作无效:从线程,而不是在其上创建的线程。'
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方法,但我不明白该把它放在哪里,为什么要使用它?任何帮助都将不胜感激!
谢谢,Jarrod
实际上您的代码什么都不做,DoWork
是不必要的。您可以将代码重写为:
private void button1_Click(object sender, EventArgs e)
{
worker.RunWorkerAsync();
}
static BackgroundWorker worker = new BackgroundWorker();
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
if (this.InvokeRequired)
this.Invoke(new Action(()=>Refresh()));
}
假设您使用在构造器中订阅了DoWork
方法
worker.DoWork += backgroundWorker1_DoWork;
请注意,Refresh
不会改变任何内容。你有什么需要刷新的?