AsyncCallback通过引用变量获取值

本文关键字:获取 变量 引用 AsyncCallback | 更新日期: 2023-09-27 18:01:04

我需要使用异步委托调用一个函数,当我学习AsyncCallback的教程时,我看到异步回调定义如下:

static void CallbackMethod(IAsyncResult result)
{
   // get the delegate that was used to call that
   // method
   CacheFlusher flusher = (CacheFlusher) result.AsyncState;
   // get the return value from that method call
   int returnValue = flusher.EndInvoke(result);
   Console.WriteLine("The result was " + returnValue);
}       

请告诉我是否可以从函数中获得作为引用的返回值。我的函数是格式

void GetName(int id,ref string Name);

在这里,我通过一个引用变量获得函数的输出。如果我使用异步委托调用这个函数,我如何读取回调函数的输出?

AsyncCallback通过引用变量获取值

您需要将参数包装到一个对象中:

class User
{
    public int Id { get; set; }
    public string Name { get; set; }
}
void GetName(IAsyncResult result)
{
    var user = (User)result.AsyncState
    // ...
}
AsyncCallback callBack = new AsyncCallback(GetName);
不要通过ref参数返回返回值。相反,将签名更改为:
string GetName(int id)

或者可能:

string GetName(int id, string defaultName) // Or whatever

请注意,"引用"answers"通过引用传递"之间有很大的区别。理解区别很重要。