C# 如何返回异步事件完成的结果
我有以下功能。重新读取完成后,如何获得正确的结果。有可能吗?我总是得到空结果。我是在Framework4.0上写的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
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上工作。我这样说对吗。