我认为async/await的一个要点是,当任务完成时,继续运行同一上下文中await被调用的地方,这在我的情况下可能是UI线程。
例如:
例如:
Debug.WriteLine("2: Thread ID: " + Thread.CurrentThread.ManagedThreadId);
await fs.ReadAsync(data, 0, (int)fs.Length);
Debug.WriteLine("3: Thread ID: " + Thread.CurrentThread.ManagedThreadId);
我不会期望这个:
2: Thread ID: 10
3: Thread ID: 11
怎么回事?为什么延续的线程ID与UI线程不同?
根据这篇文章[^],我需要显式调用ConfigureAwait来改变延续上下文的行为!
ConfigureAwait(false)
吗?或者这段代码片段是在异步 Lambda 中使用的,像这样:await Task.Run(async () => { /* no synchronization context here! */ })
? - noseratio - open to work