AZURE: async Run() in workerrole
本文关键字:in workerrole Run async AZURE | 更新日期: 2023-09-27 17:59:20
我有一个异步任务。
async Task UploadFiles()
{
}
我想在azure workerrole的Run()方法中对UploadFiles()调用'await'。但是"await"仅适用于声明为async的方法。所以我可以让Run()方法异步吗?如下所示:
public override void Run()
{
UploadFiles();
}
至
public async override void Run()
{
await UploadFiles();
}
Worker角色只有一个同步入口点。这意味着您需要保持Run
方法运行的线程处于活动状态。
您可以在UploadFiles
给您的任务上调用Wait
。等待通常是避免的,但你不得不在这里等待。成本并没有那么高:浪费了一个线程。
正如@usr所提到的,辅助角色的入口点只同步运行,因此您需要等待启动的任何任务。然而,通常情况下,我发现我通常有不止一项任务要从工作者角色异步启动。我遵循的标准模式是这个
public override void Run()
{
var tasks = new List<Task>();
tasks.Add(RunTask1Async());
tasks.Add(RunTask2Async());
tasks.Add(RunTask3Async());
Task.WaitAll(tasks.ToArray());
}