gpt4 book ai didi

c# - 需要帮助以C#实现多线程

转载 作者:太空宇宙 更新时间:2023-11-03 17:43:50 25 4
gpt4 key购买 nike

我正在制作一个应用程序,由于某种原因,当我单击按钮时,我必须启动一个新表单,同时在google docs中创建一个新文档。
我已经成功实现了上述内容,但是当应用程序正忙于在Google文档中创建新文档时,由于新加载的表单的UI冻结了。
我读过某处的文章,如果我使用多线程可以避免这种情况。
所以现在我想问我是否应该创建两个线程,在其中一个线程中,我应该放置用于创建新表单的代码,而在另一个线程中,我应该将其放置在Google文档中以创建文档。
或者我应该在线程上创建,在其中放置代码以创建新的google doc,并让新表单创建代码进入主流程?
还有,在已经编写的代码中实现线程化的最简单方法是什么?如果可能,请提供一些引用阅读 Material 。

最佳答案

您实际上有很多选择。

(1) BackgroundWorker。 如果您真正想要WinForms中最简单的异步工作编程模型,就是这样。虽然它通常用于执行一些异步任务并报告进度,但是如果不需要,您不必报告进度。

(2)基于事件的异步模式。 如果您想制作一个功能完备的组件来执行一些异步任务,可以完全控制报告进度和您自己的自定义事件,那么这是一种实现方法。这也可以帮助您比BackgroundWorker更了解线程。因为我是一个有视觉感的人,所以I created a full video presentation on how to do just this with WinForms

(3)任务并行库。 可以将TPL与WinForms一起使用,我编写了一个very detailed blog post on how to do just that here

(4)异​​步并等待。请注意,这仅要求Visual Studio 11中包含的.NET 4.5,C#5.0和C#5.0编译器(目前仅包含在BETA中)。 However, I also have a full blog post on how to do just this

(5)使用线程 ISynchronizedInvoke。 这是另一个选项I also have a full blog about

选择哪种方法真的取决于您。我的建议是简要介绍每种方法,然后根据对象对您的感觉有多先进,或者哪种方法可能最好地满足您的要求,选择一种方法。

关于c# - 需要帮助以C#实现多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10224060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com