은/방법처럼 기다리고 :비동기 & 기다리고 있습니다 IL 코드
class Program
{
static void Main(string[] args)
{
new Program().TestMethod();
}
private async void TestMethod()
{
await Task.Delay(10);
}
}
생성 된 IL-코드와 비동기 상태 머신이 필드를 포함하는 "이"메소드를 호출 인스턴스에 대한 참조 . 코드가 정적 코드로 조정 된 경우 물론 "this"값은 없습니다.
CLR 또는 디버거의 관점에서 볼 때 반사를 통해이 작업을 수행하지 마십시오. 누구나 내가 "정적 TestMethod"내에서 확인할 수있는 방법을 알고있다 - IL 수준에서 호출되었습니다!
class Program
{
static void Main(string[] args)
{
TestMethod();
}
private static async void TestMethod()
{
await Task.Delay(10);
}
}
대기중인 대기자가 아닙니다. –
기능의 개인 구현 세부 정보에 의존해서는 안됩니다. 특정 메소드가 특정 인스턴스에 액세스해야하는 경우, 사용자가 원하는 정보가 있거나 없을 수도있는 개인 구현 세부 사항을 찾기보다는 해당 인스턴스에 안전하게 액세스 할 수 있도록 인스턴스를 명시 적으로 노출해야합니다. – Servy
나는 그것에 의존하지 않고, 단지 CLR이 그것을 기다리고있는 루트까지 추적하는 방법을 알고 싶었다. – user3547817