gpt4 book ai didi

c# - 作为新线程运行类

转载 作者:太空狗 更新时间:2023-10-30 00:47:27 26 4
gpt4 key购买 nike

我想在一个新线程中开始一项工作或使用 backgroundworker 来完成这项工作,但之前没有这样做过,我想问你我应该怎么做。

我的程序有一个带有文件列表的数据 GridView ,每行一个文件。我希望用户能够选择一行,然后按“开始下载”以开始后台下载作业。我想获取有关下载进度的事件。

我有一个类 clsDownload 可以处理所有事情并引发事件,但我该如何实现后台工作?

我应该在类内部使用 System.ComponentModel.BackgroundWorker 还是创建一些包装器来处理它或使用其他一些线程 Material ?

谢谢。

编辑: 我不明白如何在 backgroundworker 中实现我的下载,任何小例子都会很好。 msdn 上的示例并没有让我走得太远。

我有一个具有 StartDownload 功能的下载类。我应该在类里面还是在来电者中使用背景 worker ? “感觉很蠢”

最佳答案

如果你只做下载,不需要其他异步处理,你可以使用 WebClient 的异步方法类(class)。尽管由于您已经拥有自己的类(class),所以这可能不是适合您的解决方案。

否则,您可以使用BackgroundWorker正如你提到的。 MSDN 页面有一个如何操作的示例。

编辑:短篇小说是:

  • 您从调用者创建BackgroundWorker
  • 当你想开始后台工作时,调用BackgroundWorker.RunWorkerAsync;
  • DoWork 事件处理程序中,您执行后台工作,在您的情况下,您启动下载类;
  • 当你在做后台工作时,你必须每隔一段时间检查一次CancelationPending
  • 当你想报告一些进度时,你需要计算它的百分比并调用ReportProgress

如果您需要真正定制的东西,您可以随时创建自己的 Thread .

我个人会坚持使用 BackgroundWorker。它为工作的各个阶段提供了一组很好的通知。如果您使用 Thread,则必须自己实现这些。

我还要确保代码不会创建太多实例。您想要限制并发下载的数量并将超过该数量的任何内容排队。

关于c# - 作为新线程运行类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/614111/

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