Zub*_*air 2 c# multithreading winforms
我有我的用户控件.我将这些用户控件(100或以上)的集合添加到面板.然后将此面板添加到主窗体中.所有这些都是在运行时完成的.由于有这么多用户控件,我的主窗体会在添加这些用户控件之前无响应.
我想知道我是否可以先将面板添加到表单中,然后从单独的线程创建我的用户控件并将它们添加到同一面板,因此我的主表单始终可供用户使用.我所有的努力都会导致:
'跨线程操作无效'错误.
如果有人可以帮助我,我会很满意的.
这就是我现在正在做的事情
void main(){
MyPanel pnlObj = new MyPanel();
this.Controls.Add(pnlObj);
}
Class MyPanel{
public void Panel()
{
MyUserControl uc1 = new MyUserControl();
MyUserControl uc2 = new MyUserControl();
this.Add(uc1);
this.Add(uc2);
}
}
Run Code Online (Sandbox Code Playgroud)
你不能在非UI线程中使用可视元素,对不起.
但是你可以做的是在非UI线程中创建所有必要的数据,并委托创建UI元素并将UI更新到UI线程.
这看起来像这样:
// in background thread
ComputeDataSlowly();
MainForm.Invoke(() =>
{
var control = CreateNewControlFromData();
MainForm.Add(control);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
576 次 |
| 最近记录: |