意外的交叉线程问题

hau*_*ous 3 c# multithreading process

我试图在原则上做一些非常简单的事情,但是我不断得到一个令cross-threading exception我难过的东西因为我没有开始使用多个线程.

我有一个Windows窗体应用程序.它启动另一个Windows窗体应用程序(使用System.Diagnostics.Process该类),并在该应用程序关闭时捕获Exited事件.然后,我的应用程序事件处理程序尝试将文本从剪贴板复制到当前显示的表单上的控件.在这一点Cross-threading exception上抛出了一个.

我假设问题是关闭应用程序中的事件是在另一个线程中(我在我的舒适区之外,所以请耐心等待),所以问题归结为"如何防止此异常?"

我有点受限于必须从剪贴板复制,但如果可以解决问题,我可以以不同的方式启动其他应用程序.

Ser*_*rvy 5

Exited事件不会在UI线程中触发,它会在Process类创建的某些后台线程中触发,以监视其他进程.

您需要编组UI线程来访问控件,这可以通过使用以下Control.Invoke方法来完成:

textbox1.Invoke(new Action(()=> textbox1.Text = Process.ExitCode.ToString()));
Run Code Online (Sandbox Code Playgroud)