我正在学习TPL C#,当我在一个任务中调用一个无限的while循环时,它会终止任何错误。难道我做错了什么?下面是示例代码。连续while循环在任务中
class Work2
{
public void DoWork()
{
List<string> scenarios = new List<string>();
scenarios.Add("work");
scenarios.Add("climb");
scenarios.Add("walk");
scenarios.Add("run");
List<int> id = new List<int>();
id.Add(1);
id.Add(2);
id.Add(3);
id.Add(4);
for (int i = 0; i < 2; i++)
{
Task.Factory.StartNew(() =>
{
workInstance(id[i], scenarios);
}, TaskCreationOptions.LongRunning);
Thread.Sleep(500);
}
}
public void workInstance(int id, List<string> scenario)
{
string Guid = System.Guid.NewGuid().ToString();
for (int i = 0; i < scenario.Count(); i++)
{
scenario[i] = scenario[i] + " " + Guid + " " + Thread.CurrentThread.ManagedThreadId;
}
while (true)
{
for (int i = 0; i < scenario.Count(); i++)
{
Console.WriteLine(scenario[i]);
}
}
}
}
如果您从Main()调用此函数,那么它可能会在1秒钟后自然终止(2 x 500ms)。注意:你要小心你的无限循环。这是一个紧凑的环境,可以占用100%的CPU资源。 – joshgo
上面的程序在work2.cs中Main我只是调用work2 wrk = new work(); wrk.dowork();这就是我所做的一切。而不是我使用正常线程的任务,我没有看到这个问题。正如我所说,我只是试验不为应用程序,所以不真正关心100%cpu – kumar