跨线程操作WinForms应用程序

时间:2014-04-22 22:11:50

标签: c# .net multithreading winforms

是否有一种简单,实际可重用的方法/方法来执行长时间运行的跨线程操作?我的意思是,我需要一些需要一段时间的东西(发送邮件,上传到数据库和FTP服务器),但我还需要同时与表格及其控件进行交互。

3 个答案:

答案 0 :(得分:4)

有很多选择。主要问题是你需要将工作推送到一个单独的线程,但不能从该线程访问你的控件。

最常见的机制是使用:

答案 1 :(得分:1)

查看BackgroundWorker课程。这将允许在更新UI时运行长时间运行的进程,而无需手动Invoke() UI线程的UI更新,如果手动使用线程,则必须执行此操作。

答案 2 :(得分:0)

您希望表单的Invoke / BeginInvoke方法允许使用UI进行corssthread操作。

最好是创建一个在另一个线程中执行长任务的类,并有一些事件来表示表单,然后在表单中你可以使用this.BeginInvoke来执行主线程中的UI操作。