假設我有一個需要相當長的時間,直到完成其工作如下異步方法:異步/等待在ASP.NET的WebAPI
void async Task LongWork()
{
await LONGWORK() // ... long work
}
現在,在網頁API,我想運行在後臺(即工作,我想在開始是LongWork(),但其完成之前後返回HTTP請求:
我能想到的三種方法來實現這一目標:
1) public async Task<string> WebApi()
{
... // do another work
await Task.Factory.StartNew(() => LongWork());
return "ok";
}
2) public async Task<string> WebApi()
{
... // do another work
await Task.Factory.StartNew(async() => await LongWork());
return "ok";
}
3) public async Task<string> WebApi()
{
... // do another work
Task.Factory.StartNew(async() => await LongWork());
return "ok";
}
Q1:方法#1和#2有什麼區別?在這個例子中,在後臺線程中包含一些async/await對的LongWork()方法是什麼? 特別是在#3中,有沒有 「等待」 Task.Factory.StartNew之前(異步()=>等待LongWork()),它是精細
感謝