AZURE:工作者角色中的异步运行()

时间:2014-04-21 09:47:28

标签: c# azure task-parallel-library c#-5.0 azure-worker-roles

我有一个异步任务。

async Task UploadFiles()
{
}

我想打电话等待'在azure workerrole的Run()方法中的UploadFiles()上。 但等待'等待'仅适用于声明为async的方法。 所以我可以像下面那样使Run()方法异步:

public override void Run()
{
   UploadFiles();
}

public async override void Run()
{
   await UploadFiles();
}

2 个答案:

答案 0 :(得分:4)

辅助角色只有一个同步入口点。这意味着您需要保持Run方法运行的线程。

您可以在Wait为您提供的任务上致电UploadFiles。通常会避免等待,但你不得不在这里做。成本并不高:浪费了一个线程。

答案 1 :(得分:3)

正如@usr所提到的,worker角色的入口点只能同步运行,所以你需要等待你开始的任何任务。然而,通常我发现我通常有多个任务,我想从工作角色异步启动。我遵循的标准模式是

public override void Run()
{
    var tasks = new List<Task>();

    tasks.Add(RunTask1Async());
    tasks.Add(RunTask2Async());
    tasks.Add(RunTask3Async());

    Task.WaitAll(tasks.ToArray());
}