将代码放在等待的任务结束时与在等待之后放置代码之间的区别:

Kel*_*sie 1 c# async-await c#-5.0

这段代码应该......

async void SomeMethodAsync() {
    this.IsDoingLongRunningWork = true;
    await Task.Run(() => 
    {
        DoLongRunningWork();
        this.IsDoingLongRunningWork = false;
    });
}
Run Code Online (Sandbox Code Playgroud)

......行为与这段代码不同......

async void SomeMethodAsync() {
    this.IsDoingLongRunningWork = true;
    await Task.Run(() => 
    {
        DoLongRunningWork();
    });
    this.IsDoingLongRunningWork = false;
}
Run Code Online (Sandbox Code Playgroud)

...?

Jon*_*eet 5

好吧,他们可能会在不同的线程中执行,一方面.如果IsDoingLongRunningWork影响用户界面(例如)那么它应该只在UI线程中更改,在这种情况下第一个代码不正确(新任务将在线程池线程中运行),第二个代码是正确的(假设从UI线程调用该方法).