ib3an
ib3an

Reputation: 241

How to return the result asynchronous event complete

I have below function. How can i get correct result after ReadCompleted. Is it possible to do that? I always get null result. I'm writing on framework 4.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;
    }            
}

Upvotes: 0

Views: 44

Answers (1)

Marius Bancila
Marius Bancila

Reputation: 16318

Your GetRecordsAsync should be async. Something like this:

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;
}  

Upvotes: 1

Related Questions