WebAPI ASP.NET ソリューションがあります。私はweb.configを次のように設定しました:
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
呼び出しでは、3 つのタスク (それぞれ 10 秒) の結果を取得する必要があります。
Task<Cat> catAsync = GetCatAsync();
Task<Dog> dogAsync = GetDogAsync();
Task<Pig> pigAsync = GetPigAsync();
await Task.WhenAll(catAsync , dogAsync , pigAsync );
cat= catAsync.Result;
dog= dogAsync.Result;
pig= pigAsync.Result;
私はそれを一度呼び出すことができますが、これへの後続の呼び出しはスレッドで終了するように見えます.CatとDogは実行されるかもしれませんが、Pigは気化するようです. 1 分ほど後に、これらが表示され始めます。
The thread '<No Name>' (0x2f60) has exited with code 0 (0x0).
The thread '<No Name>' (0x974) has exited with code 0 (0x0).
The thread '<No Name>' (0x1ea8) has exited with code 0 (0x0).
私のタスクは次のようになります。
private async Task<Cat> CatAsync()
{
await Task.Run(() =>
{
//Use WCF to get some data from a service
});
return cat;
}
IISRESET を実行すると、もう一度サイトを実行できます。
*編集
Panagiotis Kanavos による回答を読んだ後、この例で動作する以下のソリューションを投稿しました