2

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

それはなぜですか?

4

1 に答える 1