【发布时间】:2011-08-02 22:00:12
【问题描述】:
我创建了一个后台线程来做一些工作,最后我调用了一个方法ThreadDone(threadWorkResult) 来引发一个事件。目前,事件处理程序在同一个后台线程上运行,但我希望它在主 UI 线程(表单应用程序)上运行。我在网上搜索并找到了一些关于使用属性here 但想知道如何以编程方式执行此操作。有什么办法可以在处理程序本身之外完成吗?
我查看了 BackgroundWorker,但我必须同时创建多个线程,因此所有相应的 OnWorkerCompleted 事件处理程序都变得非常混乱;更重要的是,并非所有这些都需要完成的事件。在最坏的情况下,我将使用多个 BackgroundWorker,但我是否可以简单地从后台线程调用一个方法 (void aMethod()) 并强制它在主 UI 线程上运行?
【问题讨论】:
-
@ Jon :+1 我已经根据您的编辑更新了我的答案。希望对您有所帮助...
标签: c# .net winforms multithreading