Давайте посмотрим на простой код С# async/await, где у меня есть ссылка на объект (obj
) до и после 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
IS правильно ссылался назад (даже если он возобновляется в другом потоке).
Таким образом, "контекст", по-видимому, не является рабочей областью потока (т.е. локальным хранилищем потоков). Так что же такое "контекст"? Поэтому, что это значит для
Маршал продолжения обратно в исходный контекст, захваченный