我正在用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
当我停在这行代码上时,我正在查看我的代码,以便最后一次搜索异常:
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)
什么都不打印?