【发布时间】:2011-03-25 09:37:36
【问题描述】:
我构建了一个应用程序,它对数千个文件执行工作,然后将这些文件的修改副本写入磁盘。我正在使用 ThreadPool 但它产生了这么多线程,PC 变得无响应总共 260 个),所以我将最大值从默认的 250 更改为 50,这解决了这个问题(应用程序总共只产生大约 60 个线程),但是既然文件准备得如此之快,它会将 UI 捆绑到电脑无响应的地步。
有没有办法限制 I/O 的数量 - 我的意思是,我喜欢使用 50 个线程对文件执行工作,但不是在处理文件时同时写入 50 个线程。如果可以避免的话,我宁愿不重新设计文件部分的编写——我希望我可以限制来自该池的线程可以消耗的 I/O(同时)数量。
【问题讨论】:
-
您说“文件准备得如此之快,它占用了 UI”。每次文件准备好时都会更新 UI 吗?如果是这样,这可能是这里真正的问题吗??
标签: c# multithreading io