AZURE:在workerrole中异步运行Run()

我有一个异步任务。

async Task UploadFiles() { } 

我想在azure workerrole的Run()方法中对UploadFiles()调用’await’。 但’await’仅适用于声明为异步的方法。 所以我可以像下面那样使Run()方法异步:

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

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

工作者角色只有一个同步入口点。 这意味着您需要保持Run方法运行的线程处于活动状态。

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

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

 public override void Run() { var tasks = new List(); tasks.Add(RunTask1Async()); tasks.Add(RunTask2Async()); tasks.Add(RunTask3Async()); Task.WaitAll(tasks.ToArray()); }