![]() |
1
1
你已经建议了背景工作者。另一种方法是自己开始一个新的线程。
您也可以使用 ParameterizedThreadStart 如果要向dostuf()方法中加入参数。 |
![]() |
2
3
您可以尝试的第一件事是使用 BackgroundWorker . 例子
您可能需要花费大量时间来运行此方法:
因此,要委托某些工作,请使用
在本例中,事件方法someheavywork只是调用heavylifting。 要启动工人,只需执行以下操作:
提示:更新GUI线程 请记住,如果要通过这个线程更改GUI线程中的内容,则需要为此使用invoke/delegates。您可以在msdn上阅读: How can I update my user interface from a thread that did not create it? |
![]() |
3
2
非常 nice online resource 了解.NET中的线程处理,有许多示例;由Joseph Albahari共享。 |
![]() |
4
1
目前,您可以使用 ThreadPool 在不是Windows窗体应用程序的程序中对后台任务进行排队。在.NET 4.0中,有许多新的并行编程特性(比如parallel linq,…)。 Patterns for Parallel Programming: Understanding and Applying Parallel Patterns with the .NET Framework 4 可能对你有意思。 干杯 马蒂亚斯 |
![]() |
5
1
或者,如果您使用.NET 4.0,就可以使用任务框架,这很好。但是要小心不要从另一个线程写入UI控件。 |
![]() |
6
0
如前所述,使用后台工作人员并查看 this answer 和 this answer . |
![]() |
7
-1
试用使用 BackgroundWorker 创建BackgroundWorker(在工具箱中提供) 创建DoWork事件(您可以在bgw属性的事件选项卡中访问此事件)
并按以下方式调用:
您可以将变量传递给DoWork处理程序,该处理程序可以通过
|
![]() |
user107586 · 如何处理等待句柄不会导致无限循环? 7 月前 |
![]() |
ron burgundy · 获取-释放语义是否跨线程传递?[副本] 8 月前 |
![]() |
BenjiFB · C#内存缓存:在一次操作中追加到列表? 8 月前 |
![]() |
András Takács · Python多线程问题 12 月前 |
|
András Takács · Python多线程错误 1 年前 |