Wenn i einen Standard-Async implementieren/erwartet Verfahren wie:Async & Await IL-Code
class Program
{
static void Main(string[] args)
{
new Program().TestMethod();
}
private async void TestMethod()
{
await Task.Delay(10);
}
}
Der erzeugte IL-Code- und die Async-Zustand-Maschine ein Feld enthält, „das“ mit einem Hinweis auf die Instanz, die das Verfahren aufgerufen . Wenn der Code an einen statischen angepasst wird, gibt es natürlich keinen "diesen" Wert.
Um dies nicht über Reflektion zu tun, mehr aus Sicht der CLR oder des Debuggers. Weiß jemand, wie ich innerhalb der "statischen Testmethode" feststellen kann, von welcher Methode ich genannt wurde - auf der IL-Ebene!
class Program
{
static void Main(string[] args)
{
TestMethod();
}
private static async void TestMethod()
{
await Task.Delay(10);
}
}
Sie warten nicht auf Ihren Warter. –
Sie sollten sich nicht auf private Implementierungsdetails eines Features verlassen. Wenn eine bestimmte Methode Zugriff auf eine bestimmte Instanz benötigt, sollten Sie diese Instanz explizit verfügbar machen, damit Sie zuverlässig darauf zugreifen können, anstatt zu versuchen, private Implementierungsdetails zu finden, die die gewünschten Informationen enthalten können. – Servy
Ich bin nicht darauf angewiesen, wollte nur wissen, wie die CLR es auf die Wurzel eines Wartens ... – user3547817