让我们看一些简单的 C# async/await 代码,其中我在withobj
之前和之后都有一个对象引用 ( )await
ConfigureAwait(false)
private async Task<SomeObject> AnAsyncLibraryMethod(SomeObject obj)
{
Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
obj.Name = "Harry"; // <-- obj here
// MAIN POINT
var newSubObj = await FetchOverHttpAsync().ConfigureAwait(false);
// Continuation here
Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
obj.Name = "Sally"; // <-- same obj here
return obj;
}
public class SomeObject { public string Name; }
ConfigureAwait(false)
似乎意味着不 将继续编组回捕获的原始上下文- 好的,但这到底意味着什么?我已经尝试了上面的代码并且被obj
正确地引用回来(即使它在不同的线程上恢复)。
所以“上下文”似乎不是线程的工作内存(即线程本地存储)。那么“上下文”包含什么?因此,真正意味着什么
将延续编组回捕获的原始上下文