C# 在检索委托返回值时真正异步执行Asynccallback

C# 在检索委托返回值时真正异步执行Asynccallback,c#,asynchronous,C#,Asynchronous,因此,基本上,我使用BeginInvoke调用一个委托,同时传递AsyncCallback。无论何时执行回调,我都希望检索委托返回值并对其进行处理,但要做到这一点,我需要调用EndInvoke,它会阻塞主线程,这不是我想要的。我希望回调真正异步执行。可以这样做吗?如果没有,还有其他方法吗?我的异步回调方法现在看起来像这样 private void RegisterUserAsyncCallback(IAsyncResult result) { var something = (Somet

因此,基本上,我使用BeginInvoke调用一个委托,同时传递AsyncCallback。无论何时执行回调,我都希望检索委托返回值并对其进行处理,但要做到这一点,我需要调用EndInvoke,它会阻塞主线程,这不是我想要的。我希望回调真正异步执行。可以这样做吗?如果没有,还有其他方法吗?我的异步回调方法现在看起来像这样

private void RegisterUserAsyncCallback(IAsyncResult result)
{
    var something = (Something)result.AsyncState;
    var asyncCaller = (AsyncMethodCaller)((AsyncResult)result).AsyncDelegate;
    var responce = asyncCaller.EndInvoke(result);

    if (responce.Success)
    {
        something.SomeId = SomeId.Active;
        someDAL.UpdateSomething(something );
    }
}

您是否考虑过使用(.NET 4.0或更高版本)或
async
/
await
(.NET 4.5)?要使用这些方法,我需要这些方法将任务返回为可等待,但我不想这样做。不,这不是必需的。也许有帮助?除此之外,您发布的代码片段似乎很好,但它与您的评论“我需要调用EndInvoke以阻止主线程…”相矛盾。永远不要在主线程上调用函数
RegisterUserAsyncCallback
;它将在代理完成后自动调用的随机工作线程上。谢谢,这真的很有帮助。谢谢