C# 2.0 后台工作线程-C#

C# 2.0 后台工作线程-C#,c#-2.0,backgroundworker,C# 2.0,Backgroundworker,我必须在WindowsNT服务中并行执行3个异步操作(使用.Net2.0/C)。为此,我使用Backgroundworker组件 这是一个好的选择/方法吗 对于连续操作,我将在RunWorkerCompleted事件中再次调用RunWorkerAsync() 请建议我。通常,BackgroundWorker用于长时间操作。如果您只需要并行执行3个任务,您可以使用简单的线程。通常,当您需要RunWorkerCompleted在GUI中执行更新时,会使用BackgroundWorker。至少我是这么

我必须在WindowsNT服务中并行执行3个异步操作(使用.Net2.0/C)。为此,我使用Backgroundworker组件

  • 这是一个好的选择/方法吗
  • 对于连续操作,我将在RunWorkerCompleted事件中再次调用RunWorkerAsync()

  • 请建议我。

    通常,BackgroundWorker用于长时间操作。如果您只需要并行执行3个任务,您可以使用简单的线程。

    通常,当您需要RunWorkerCompleted在GUI中执行更新时,会使用BackgroundWorker。至少我是这么用的。听起来你想让它持续运行,那么为什么不使用一个普通的辅助线程呢


    我所看到的最大问题是BackgroundWorker使用.NET线程池,因此如果您真的希望此线程池持续运行,您只需保证使用其中一个线程池线程,其中可用的线程数量有限。

    我不会将BackgroundWorker用于您在这里描述的作业

    后台工作程序用于一些“长时间”运行的操作,同时保持一个响应良好的UI。使用服务会破坏UI模式

    对于服务,我将使用一个计时器和三个线程


    让计时器检查三个线程是否存在,并在需要时重新启动它们或报告错误。三个线程可以在while循环中完成各自的工作(不要忘记在其中添加睡眠(0)

    所有3个操作也是长时间操作。需要大量的处理。其中之一是将大MB文件复制到文件夹位置。所以,我还是应该求助于普通线程。我不是很清楚,也不是很自信。如果你不需要关于进度更改和任务完成的警报,你可以使用线程,否则就使用后台工作程序。我想这取决于你的情况。我现在一直在使用它们,甚至没有使用普通线程。但是您需要了解线程池线程的限制。BackgroundWorker、Windows Workflow和我认为仅在代理上使用BeginInvoke就可以使用线程池。我敢打赌,在一个复杂的应用程序中运行起来相当容易。酷!在将来,如果我需要更新某种UI来描述3个操作中的任何一个的进度,那么BckgrndWrkr就会派上用场。另外,您是否预见到在RunWorkerCompleted事件中再次调用RunWorkerSync()会出现任何问题?这里还有一个视图-据我所知,专家sexchange文章没有非常有趣的内容。(为了检查自己,你必须复制链接并粘贴到谷歌或类似网站上,这样你就可以从搜索引擎进入该网站。然后只需滚动到底部)。@Joel我差点以为这是一篇垃圾邮件,因为你在评论开始时输入了错别字。或者可能不是打字错误。:)