Sleepを使用して、長時間実行されるタスクメソッドがあります
public Task LongRunning() {
return Task.Factory.StartNew(
() => {
Trace.TraceInformation("Start Sleep");
Thread.Sleep(10000);
Trace.TraceInformation("End Sleep");
});
}
これは私のテストで呼び出され、正常に動作します
[TestMethod]
public void SimpleContinueWith() {
Trace.TraceInformation("Start");
LongRunning()
.ContinueWith(
t => Trace.TraceInformation("End")
).Wait();
}
> QTAgent32.exe Information: 0 : Start
> QTAgent32.exe Information: 0 : Start Sleep
> QTAgent32.exe Information: 0 : End Sleep
> QTAgent32.exe Information: 0 : End
ただし、 async/await を使用すると、テストはすぐに失敗します
[TestMethod]
public async void SimpleAwait() {
Trace.TraceInformation("Start");
await LongRunning();
Trace.TraceInformation("End");
}
> QTAgent32.exe Information: 0 : Start
> QTAgent32.exe Information: 0 : Start Sleep
それはなぜですか?