小编DDB*_*DDB的帖子

C#Downloader:我应该使用Threads,BackgroundWorker还是ThreadPool?

我正在用C#编写一个下载程序并停止了以下问题:我应该使用什么样的方法来并行化我的下载并更新我的GUI?

在我的第一次尝试中,我使用了4个线程,并且在每个线程完成时我开始了另一个:主要问题是我的cpu在每个新线程启动时都是100%.

谷歌搜索,我发现BackgroundWorker和ThreadPool的存在:声明我想用我正在下载的每个链接的进度更新我的GUI,什么是最好的解决方案?

1)创建4个不同的BackgroundWorker,附加到每个ProgressChanged事件,委托我的GUI中的函数来更新进度?

2)使用ThreadPool并将最大和最小线程数设置为相同的值?

如果我选择#2,当队列中没有更多线程时,是否会停止4个工作线程?它暂停了吗?由于我必须下载不同的链接列表(每个链接20个链接)并在完成一个链接时从一个链接移动到另一个链接,ThreadPool是否在每个列表之间启动和停止线程?

如果我想在live上更改工作线程的数量并决定使用ThreadPool,从10个线程更改为6,它是否会抛出异常并停止4个随机线程?

这是让我头疼的唯一部分.我提前感谢你们每个人的答案.

c# multithreading backgroundworker download-manager threadpool

6
推荐指数
1
解决办法
3577
查看次数

Scala io.Source.FromFile是否会返回任何类型的异常?

当我停在这行代码上时,我正在查看我的代码,以便最后一次搜索异常:

var list: Array[String] = Source.fromFile(this.Path).getLines.toArray
Run Code Online (Sandbox Code Playgroud)

我搜索了scala-lang的文档,但似乎没有任何一种方法抛出任何一种ioException......这怎么可能?

编辑:

try {
  var list: Array[String] = Source.fromFile("").getLines.toArray
}
catch {
  case ex:Exception => println(ex.getMessage)
}
Run Code Online (Sandbox Code Playgroud)

什么都不打印?

scala exception file ioexception

5
推荐指数
1
解决办法
2818
查看次数