我正在尝试为通用委托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);
}
}
问题在于,由于额外的
<T>
,使得AsyncActionCallback
成为泛型,并且具有与预期不同的签名,因此它无法编译。预期的签名是void AsyncActionCallback(IAsyncResult)
。有人知道如何解决这个问题或实现我想做的事情吗?