问题描述
我需要执行3并行任务和每个任务完成后,他们应该调用哪个打印出的结果相同的功能。
I need to execute 3 parallel tasks and after completion of each task they should call the same function which prints out the results.
我不使用.NET明白为什么我们有呼叫台异步(delegate.BeginInvoke()及delegate.EndInvoke())?以及Thread类
I don't understand in .net why we have Asychronous calling (delegate.BeginInvoke() & delegate.EndInvoke()) as well as Thread class?
我有点糊涂了使用哪一个的时候?现在,在这种特殊情况下,我该台异步使用主叫或Thread类?
I'm little confused which one to use when? Now in this particular case, what should I use Asychronous calling or Thread class?
我使用C#。
推荐答案
1。异步委托
呼叫台异步时可以使用 具有应进行处理的工作项目 在后台的你照顾的时候 他们完成的。
http://stackoverflow.com/questions/1506838/backgroundworker-vs-background-thread/1507337#1507337
2。 BackgroundWorker的
- 使用的BackgroundWorker 如果您有运行在一个单一的任务 背景的需要与互动 用户界面。的,并使用它,如果的你没有当他们完成的他们的任务在意。编组数据的任务 和方法调用到UI线程是 通过自动处理的 基于事件的模型。
- 避免BackgroundWorker的如果(1)程序集已不 引用System.Windows.Form 装配,(2),你需要线程 是前台线程,或(3)你 需要操纵线程 优先级。
3。线程池
- 使用线程池螺纹时,效率是需要的。线程池 有助于避免相关的开销 与创建,启动和停止 线程。
- 避免使用线程池如果(1)任务运行的的寿命您 应用程序,(2),你需要的线程 是一个前台线程,(3),则 需要操纵线程 优先级,或(4)您需要的线程 有一个固定的身份(中止, 悬浮,发现)。
4。 Thread类
- 使用线程的长时间运行的任务类,当你 需要通过一个正式提供的功能 线程模型,例如,选择 前景和背景之间 线程,调整线程的优先级, 细粒度的控制线 执行等。
这篇关于异步委托VS线程/线程池?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!