我正在尝试设置多个BackgroundWorkers来做工作,当不忙时开始做下一部分工作.我似乎无法让他们正常工作.我有以下代码.
当我设置FilesToProcess等于或小于MaxThreads它完美的工作,但如果我把它更高,应用程序冻结.
我确信它很简单,但我看不到它.
using System;
using System.ComponentModel;
using System.Threading;
using System.Windows.Forms;
namespace bgwtest
{
public partial class Form1 : Form
{
private const int MaxThreads = 20;
private const int FilesToProcess = 21;
private BackgroundWorker[] threadArray = new BackgroundWorker[MaxThreads];
public Form1()
{
InitializeComponent();
}
private void Form1Load(object sender, EventArgs e)
{
InitializeBackgoundWorkers();
}
private void InitializeBackgoundWorkers()
{
for (var f = 0; f < MaxThreads; f++)
{
threadArray[f] = new BackgroundWorker();
threadArray[f].DoWork += new …Run Code Online (Sandbox Code Playgroud) 无论如何都要增加一个Parallel.For一旦启动就会做的循环次数?示例如下:
var start = 0;
var end = 5;
Parallel.For(start, end, i =>
{
Console.WriteLine(i);
end = 10;
});
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
松鸦