C# 如何返回异步事件完成的结果

C# 如何返回异步事件完成的结果,c#,.net,asynchronous,C#,.net,Asynchronous,我有以下功能。重新读取完成后,如何获得正确的结果。有可能吗?我总是得到空结果。我是在Framework4.0上写的 Function calling object _result = CreateSalesOrder.GetAsyncRecords("xxxx"); console.writelen(_result); ===> null class CreateSalesOrder { public wsRef_SalesOrder.Sales_Order GetAsy

我有以下功能。重新读取完成后,如何获得正确的结果。有可能吗?我总是得到空结果。我是在Framework4.0上写的

Function calling

object _result = CreateSalesOrder.GetAsyncRecords("xxxx");
console.writelen(_result); ===> null

class CreateSalesOrder
{   
    public wsRef_SalesOrder.Sales_Order GetAsyncRecords(string _strNo)
    {
        wsRef_SalesOrder.Sales_Order_PortClient _ws = GetService();
        wsRef_SalesOrder.Sales_Order _rec = null;
        _ws.ReadCompleted += delegate(object sender, wsRef_SalesOrder.ReadCompletedEventArgs e)
        {
            _rec = e.Result;
        };
        _ws.ReadAsync(_strNo);
        if (_ws.State == System.ServiceModel.CommunicationState.Opened)
            _ws.Close();
        return _rec;
    }            
}

您的
GetRecordsAsync
应该是
async
。大概是这样的:

public async Task<wsRef_SalesOrder.Sales_Order> GetAsyncRecords(string _strNo)
{
    wsRef_SalesOrder.Sales_Order_PortClient _ws = GetService();
    wsRef_SalesOrder.Sales_Order _rec = null;
    _ws.ReadCompleted += delegate(object sender, wsRef_SalesOrder.ReadCompletedEventArgs e)
    {
        _rec = e.Result;
    };
    await _ws.ReadAsync(_strNo);
    if (_ws.State == System.ServiceModel.CommunicationState.Opened)
        _ws.Close();
    return _rec;
}  
公共异步任务GetAsyncRecords(字符串\u strNo)
{
wsRef_salesforder.Sales_Order_PortClient_ws=GetService();
wsRef\u salesforder.Sales\u Order\u rec=null;
_ws.ReadCompleted+=委托(对象发送方,wsRef\u SalesOrder.ReadCompletedEventArgs e)
{
_rec=e.结果;
};
wait _ws.ReadAsync(_strNo);
if(_ws.State==System.ServiceModel.CommunicationState.Opened)
_ws.Close();
返回记录;
}  

wait\u ws.ReadAsync(\u strNo);看来你不是在等它读完。嗨,马吕斯,谢谢你的样品和回复。我在VS10上工作,我了解Async,Wait在上面的VS12上工作。我这样说对吗。