2016-01-27 4 views
8

.NET async/await:この場合、何かを返す必要がありますか?私の仕事があるため、一定の条件で瞬時に返すことができ、このような場合、

public async Task Test(List<int> TestList) 
{ 
    if (TestList.Count() == 0) 
     return; 

    // Do something 
    await UploadListAsync(TestList); 
} 

は、それが正しいreturn;です私はTask.FromResult(false);を使用する必要があり、以上の正しい方法はありますか?あなたがasyncを使用している場合は

+5

返品は正しいです。 –

答えて

11

、あなたは(編集を参照)、明示的にTaskを返すことはできません - 戻り値は、Taskの戻り値であることをコンパイラによってアップ箱入りされています。したがって、あなたのasyncメソッドは、他のメソッドのように振る舞い、ロジックを早期に取り除く必要がある場合はreturnとなるはずです。

EDIT: 戻り値の型がTask<Task...ある場合、コンパイラは同じラッピングを行っているので、あなたがasync中にTaskを返すことができます1時間は、しかし、これはまだ外側、内側のTaskではなく返すことになるで。 await-チェーンTasks

0

Taskが新しいvoidであるのに対して、これはかなりまれな使用例でもあります。

asyncの方法については、

関連する問題