Raj*_*mar 1 c# multithreading backgroundworker winforms
我有一个ShowPanel(Control ctrl)需要Control作为参数传递的函数。我需要在后台工作线程中调用这个函数。我使用以下代码
void bw_DoWork(object sender,DoWorkEventArgs e)
{
ShowPanel(listBox1);
}
Run Code Online (Sandbox Code Playgroud)
但因执行而失败
跨线程操作无效:从创建它的线程以外的线程访问控件“Form1”
我怎样才能listBox1在后台线程中通过这里?
序列化调用,因为您无法访问在不同线程上创建的控件,您需要使用下面的序列化调用
void bw_DoWork(object sender,DoWorkEventArgs e)
{
this.Invoke(new MethodInvoker(delegate {
ShowPanel(listBox1);
}));
}
Run Code Online (Sandbox Code Playgroud)