Sou*_*ver 0 c# multithreading winforms
有没有一种方法可以在UI线程外部调用代码时运行代码?我知道它基本上需要使用control.Invoke或control.BeginInvoke。我的问题是我无法使用这些方法访问UI元素。
我的情况是这样的:
我的应用程序遇到了问题,因此我编写了一个仅包含上述元素的简单应用程序,以检查其工作原理(或者为什么不起作用),我发现:
但这只是一个简单的应用程序,我将所有内容都保存在一个文件中。在我的“其他线程”看不见UI代码的情况下,我可以使用更大的应用程序做什么?我是否必须以某种方式传递单个控件作为参数,才能访问该线程?还是有其他更好看的解决方案?
小智 6
您可以通过以下方式使用Application.OpenForms:
public void DoSomething(string s)
{
var form = System.Windows.Forms.Application.OpenForms[0];
if (form.InvokeRequired)
{
Action<string> m = DoSomething;
form.Invoke(m, s);
return;
}
//do something
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
782 次 |
| 最近记录: |