需要帮助在C#中实现多线程

Sne*_*nor 1 .net c# multithreading

我正在中由于某种原因,当我在一个按钮,我要开始新的形式,点击,并在同一时间创建的谷歌文档的新文档的应用程序.我已经成功实现了上述功能,但是当应用程序忙于在google docs上创建新文档时,新加载的表单的UI会冻结.我在某处读到,如果我使用多线程,这可以避免.所以现在我想问我应该创建两个线程,其中一个我应该放置代码来创建新表单,另一个我应该放置代码在google doc中创建一个文档.或者我应该在线程上创建我应该放置代码来创建新的google doc并让新表单创建代码在主进程中?另外,在已经编写的代码中实现线程的最简单方法是什么?如果可能,请提供一些参考阅读材料.

Dav*_*son 6

你实际上有很多选择.

(1)BackgroundWorker.如果你真的想要在WinForms中进行异步工作的最简单的编程模型,那就是这个.它通常用于执行某些异步任务并报告进度,但如果您不需要,则不必报告进度.

(2)基于事件的异步模式.如果您想创建一个完整的组件来执行某些异步任务,完全控制报告进度和您自己的自定义事件,那么这是一种方法.这也有助于您了解线程而不是BackgroundWorker.因为我是一个视觉人,我创建了一个完整的视频演示文稿,介绍如何使用WinForms做到这一点.

(3)任务并行库.您可以将TPL与WinForms一起使用,我在这里写了一篇非常详细的博客文章,介绍如何做到这一点.

(4)异步和等待.请注意,这需要.NET 4.5,C#5.0和C#5.0编译器仅包含在Visual Studio 11中,Visual Studio 11现在仅在BETA中.但是,我还有一篇关于如何做到这一点的完整博客文章.

(5)带线程的ISynchronizedInvoke.这是另一种选择,我也有一个完整的博客.

这取决于您选择哪种方法.我的建议是简要地看一下每个方法,并根据主题对您的感受,或者哪种方法最符合您的要求,选择一种方法.