Sim*_*ker 2 c# multithreading thread-safety winforms
我正在开发一个VS包,我有这个问题:
我有一个Background-Thread,每隔几秒检查一次必须进行的具体更改.这包括更改VS 2010的GUI,由于某种原因,它在没有调用的情况下工作得很好.
无论如何,如果我尝试打开一个新的表单,它会打开,但它没有显示任何内容,崩溃并且没有响应.
我已经试过了Application.OpenForms[0].invoke( /* delegate to create the form */).
这很好,但我没有一个开放的表格.
我还尝试创建一个System.Windows.Forms.Timer,但它并不是首先启动的.
问题:如何获得正确的GUI线程来调用我的表单?
或者更确切地说:如何从我的后台线程创建一个新表单?
在主应用程序启动时,在某处存储SynchronizationContext.Current的实例.一旦设置好.您可以尝试在任何其他线程中使用代码.
GuiContext.Send(_ => {
Form2 frm2=new Form2();
frm2.ShowDialog();
}, null);
Run Code Online (Sandbox Code Playgroud)
其中GuiContext是SynContext的存储实例.
| 归档时间: |
|
| 查看次数: |
3060 次 |
| 最近记录: |