Was bedeutet "Kontext" in C # genau "asynchron" / "Code abwarten"?
Sehen wir uns einen einfachen C # async / await-Code an, in dem ich einen Objektverweis habe obj
) vor und nach einemawait
mitConfigureAwait(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)
scheint @ zu bedeutNICH Marshall die Fortsetzung zurück zum ursprünglichen Kontext erfasst - ok, aber was heißt das eigentlich? Ich habe den obigen Code ausprobiert undobj
IS korrekt referenziert zurück (auch wenn es in einem anderen Thread fortgesetzt wird).
Der "Kontext" scheint also nicht der Arbeitsspeicher des Threads zu sein (d. H. Der lokale Thread-Speicher). Was beinhaltet "Kontext"? Was bedeutet es also wirklich,
Marshall die Fortsetzung zurück zum ursprünglichen Kontext erfasst