C#에서 비동기 메서드를 래핑하는 것과 관련하여 이상한 동작이 있습니다.비동기 메서드 랩
이 이상한 동작을하는 코드 부분을 잘라내는 것이 어렵 기 때문에 대신 테스트 프로젝트를 작성하여 문제를 조사했습니다. 이것이 내가 알아 낸 것입니다.
은 단순히 다른 비동기 방식의 래퍼입니다 비동기 방식을 가지고 테스트 클래스가 :
public class Test
{
public async Task Delay()
{
await Task.Delay(1000);
}
}
(내 원래 코드에서 그것은에 대한 래퍼 메소드가이 객체를 포함하는 래퍼 클래스입니다)
var test = new Test();
await Task.Delay(1000);
await test.Delay();
Task.Delay(1000).Wait();
test.Delay().Wait();
모두 마지막 줄 때까지 잘 (나는 WPF 창을 사용하고 있기 때문에, 내 경우에는로드 된 경우) : 내 테스트 프로그램에서
나는 비동기 이벤트 처리기에서 다음 코드를 실행하고 결코 돌아 오지 않는다. 첫 번째 시나리오가 작동하지 않는 이유
public class Test
{
public Task Delay()
{
return Task.Delay(1000);
}
}
내 질문은 :
은 그 때 나는 작동 다음과 마지막 줄에 테스트 클래스를 변경하려고?
이것은 "과부하"가 아닙니다 –
당신이 옳을 수도 있습니다 (내가 생각할 수있는 가장 좋은 용어였습니다).하지만 더 나은 용어를 제공해 주시겠습니까? – reSPAWNed
"wrapping"일까요? –