Action<T>
메서드에서 간단한 비동기 호출을 수행 할 수 있도록 일반 대리자 Action<T>
에 대한 확장 메서드를 만들려고합니다. 그것은 기본적으로 당신이 방법을 실행하고자 할 때의 패턴을 구현하고 진행의 걱정하지 않는다 :이 확장 메서드를 컴파일하는 방법은 무엇입니까?
public static class ActionExtensions
{
public static void AsyncInvoke<T>(this Action<T> action, T param) {
action.BeginInvoke(param, AsyncActionCallback, action);
}
private static void AsyncActionCallback<T>(IAsyncResult asyncResult) {
Action<T> action = (Action<T>)asyncResult.AsyncState;
action.EndInvoke(asyncResult);
}
}
문제는이 때문에 AsyncActionCallback
일반적이고하게 추가 <T>
의 컴파일되지 것입니다 예상과 다른 서명이 있어야합니다. 서명 void AsyncActionCallback(IAsyncResult)
이 필요합니다.
누구든지이 문제를 해결하거나 내가하려고하는 일을 수행하는 방법을 알고 있습니까?
그건 한 가지 방법입니다. 좋은 생각입니다. – leppie
굉장하고, 그 놀라운 빠른 대답에 대해 너무 감사드립니다! 람다가 이전에 불가능했던 것을 가능하게하는 방법은 흥미 롭습니다. 결국 설탕이 아닐까요? –
이 방법을 사용하면 호출 중에 발생한 오류가 바닥에 떨어질 수 있습니다. try {} catch {} 안에 람다의 내용을 래핑하려고 할 수 있습니다. –