我有一个异步任务。
async Task UploadFiles()
{
}
我想打电话等待'在azure workerrole的Run()方法中的UploadFiles()上。 但等待'等待'仅适用于声明为async的方法。 所以我可以像下面那样使Run()方法异步:
public override void Run()
{
UploadFiles();
}
到
public async override void Run()
{
await UploadFiles();
}
答案 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());
}