所以我们用windows azure设置了一个工作者角色,并且它的CPU利用率非常高。我认为这与本节有关,但我不知道该怎么做。每个开始的线程都有自己的睡眠,但主线程只是在while循环中运行。难道那里不应该有睡眠吗?Windows Azure工作者角色,如何处理主线程?
public class WorkerRole : RoleEntryPoint
{
private List<ProcessBase> backgroundProcesses = new List<ProcessBase>();
public override void Run()
{
// This is a sample worker implementation. Replace with your logic.
Trace.WriteLine("BackgroundProcesses entry point called", "Information");
foreach (ProcessBase process in backgroundProcesses)
{
if (process.Active)
{
Task.Factory.StartNew(process.Run, TaskCreationOptions.LongRunning);
}
}
while (true) { }
}
这样的事情怎么样?
public override void Run()
{
// This is a sample worker implementation. Replace with your logic.
Trace.WriteLine("BackgroundProcesses entry point called", "Information");
List<Task> TaskList = new List<Task>();
foreach (ProcessBase process in backgroundProcesses)
{
if (process.Active)
{
TaskList.Add(Task.Factory.StartNew(process.Run, TaskCreationOptions.LongRunning));
}
}
Task.WaitAll(TaskList.ToArray());
//while (true) { }
}
它将CPU从99%降到1.5%,所以我概述的解决方案似乎工作正常。应该没问题,只是等待或多或少永远,我希望... –