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