所以我們用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%,所以我概述的解決方案似乎工作正常。應該沒問題,只是等待或多或少永遠,我希望... –