Wcf 在异步调用中不执行回调函数

Wcf 在异步调用中不执行回调函数,wcf,asynchronous,callback,Wcf,Asynchronous,Callback,我试图用WCF进行一个简单的异步调用,但从未执行回调函数。谁能告诉我代码有什么问题吗 我正在使用visual studio 2008和.Net 3.5 服务代码 [ServiceContract] public interface IService1 { [OperationContract(AsyncPattern = true) ] IAsyncResult BeginGetData(string value, AsyncCallback callback, object

我试图用WCF进行一个简单的异步调用,但从未执行回调函数。谁能告诉我代码有什么问题吗

我正在使用visual studio 2008和.Net 3.5

服务代码

 [ServiceContract]
public interface IService1
{
    [OperationContract(AsyncPattern = true) ]
    IAsyncResult BeginGetData(string value, AsyncCallback callback, object state);

    string EndGetData(IAsyncResult result);
}

public class Service1 : IService1
{

    #region IService1 Members

    public IAsyncResult BeginGetData(string value, AsyncCallback callback, object state)
    {
        return new CompletedAsyncResult<string>(value, state);
    }

    public string EndGetData(IAsyncResult r)
    {
        CompletedAsyncResult<string> result = r as CompletedAsyncResult<string>;
        return result.Data;
    }

    #endregion
}
class Program
{
    static void Main(string[] args)
    {

        Service1Client client = new Service1Client();

        Console.WriteLine("Start async call");
        IAsyncResult result = client.BeginGetData("abc", callback, null);
        Console.ReadLine();
    }
    static void callback(IAsyncResult result)
    {
        string a = "in callback";

        Console.WriteLine(a);
    }
}

您需要显式地调用回调

        IAsyncResult result = client.BeginGetData("abc", callback, null);

        callback(result);

        Console.ReadLine();
请参阅此处的参考资料


+1是的,您缺少最基本的部分。如果不在BeginInvoke中指定回调,将如何调用它?其他链接供您参考