如果这是一个简单的问题,我很抱歉,但我非常疲惫,虽然思考得直。我最近设置了线程并且它工作得很好。用户选择要对其执行工作的项目,我Thread
为他们选择的项目动态创建一个 s 数组,并为每个项目调度一个线程。
但是,我注意到如果选择太多,则文件所在的服务器不会播放得很好。我知道一个事实,我一次只能声明 5 个活动线程,即使有 30 个项目需要工作,但我无法理解它。
PS:如果我描述 ThreadPool 让我知道......我试图让它工作,但有一段时间没有运气,对 .NET 的线程方式很新。
当前方式:
threadedResults = new List<string>[SelectedItems.Count];
List<string> results = new List<string>();
ThreadSettings tsArgs = (ThreadSettings)args;
for (int i = 0; i < SelectedItems.Count; i++)
{
threadedResults[i] = new List<string>();
}
Thread[] threads = new Thread[SelectedItems.Count];
for (int i = 0; i < SelectedItems.Count; i++)
{
KeyValuePair<int, ThreadSettings> threadArgs = new KeyValuePair<int, ThreadSettings>(i, (ThreadSettings)tsArgs);
threads[i] = new Thread(new ParameterizedThreadStart(DoWork));
threads[i].Start(threadArgs);
}
for (int i = 0; i < SelectedItems.Count; i++)
{
if (CommandTask != null)
threads[i].Join();
else
{
// User Cancelled, abort all threads and break
for (int j = 0; j < SelectedItems.Count; j++)
{
threads[j].Abort();
}
break;
}
}
// Gather all results, format and return