C# 如何将WCF的同步调用转换为异步调用?

C# 如何将WCF的同步调用转换为异步调用?,c#,wcf,asynchronous,C#,Wcf,Asynchronous,目前我们有两种WCF服务。它们被称为Synschronous,如下所示: XYZ.XYZClient test= new XYZ.XYZClient(); bool result = test.Add(1,2); 有人能给我解释一下如何将其转换为异步调用吗?如果您遵循这一点 它将成为: double value1 = 100.00D; double value2 = 15.99D; XYZ.XYZClient test= new XYZ.XYZClient(); test.AddComplet

目前我们有两种WCF服务。它们被称为Synschronous,如下所示:

XYZ.XYZClient test= new XYZ.XYZClient();
bool result = test.Add(1,2);
有人能给我解释一下如何将其转换为异步调用吗?

如果您遵循这一点

它将成为:

double value1 = 100.00D;
double value2 = 15.99D;
XYZ.XYZClient test= new XYZ.XYZClient();
test.AddCompleted += new EventHandler<AddCompletedEventArgs>(AddCallback);
test.AddAsync(1, 2);
Console.WriteLine("Add({0},{1})", value1, value2);
完成时执行的代码

[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
public partial class AddCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs
{
    private object[] results;

    public AddCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
            base(exception, cancelled, userState)
    {       this.results = results;         }

    public double Result
    {
        get            {
            base.RaiseExceptionIfNecessary();
            return ((double)(this.results[0]));
        }
    }
}
// Asynchronous callbacks for displaying results.
static void AddCallback(object sender, AddCompletedEventArgs e)
{
    Console.WriteLine("Add Result: {0}", e.Result);
}
代表

public event System.EventHandler<AddCompletedEventArgs> AddCompleted;
public event System.EventHandler AddCompleted;

更改wcf代理以生成基于任务的操作并使用异步/等待

XYZ.XYZClient test= new XYZ.XYZClient(); 
bool result = await test.AddAsync(1, 2);

检查链接:。希望它能帮助您。这里的
AddCompletedEventArgs
AddCallback
是什么?
AddCompletedEventArgs
是一个事件处理程序,
AddCallback1
是一个在完成时处理的回调方法。我将把它添加到答案中。
AddCompleted
是一个方法?@user2729272它是一个委托,即
public event System.EventHandler AddCompleted我理解客户端服务调用部分。现在我想知道委托、完成后代码和事件args操作块将被写入何处?