Await ignored in asynchronous method c #

Posted on

Question :

I need to use the return of an asynchronous method for validation but even with the use of “await” the method is still running before I get the function return.

    var teste = await new VendaService().EnviarVendaParaServicoCentral(new List<ItemVenda>(), new Venda());
    if (teste)

Asynchronous method with other asynchronous calls:

public async Task<bool> EnviarVendaParaServicoCentral(List<ItemVenda> itensVenda, Venda venda)
        await this._conHelper._connection.Start();
        this._vendaEfetuada = false;
        await this._conHelper._hubProxy.Invoke("RealizarVenda", itensVenda, venda);
        this._conHelper._hubProxy.On<bool>("RetornoDaVenda", (retornoServicoCentral) =>
            this.Dispatcher.BeginInvoke(() =>
                this._vendaEfetuada = retornoServicoCentral;

        return this._vendaEfetuada;                
    catch (Exception ex)
    return false;


Answer :

For asynchronous methods that return Task<object> in your Task<bool> case, you have to access the property “Result”

public static async Task<int> test()
        Task t = Task.Factory.StartNew(() => {   Console.WriteLine("do stuff"); });
        await t;
        return 10;


static  void Main(string[] args)

    Task<int> test1 = Task.Factory.StartNew<int>(() => test());
    System.Console.WriteLine(test1.Result); // block and wait for the result


What you can do is also define a call back method for your method.

private async void Search()
    await Search(SearchCompleted);//<--pass the callback method here

private async Task Search(Action<string> callback)
    //Here you're done with the file so invoke the callback that's it
    callback(file);//pass which file is finished 

private void SearchCompleted(string file)
    //this method will be called whenever a file is processed



Leave a Reply

Your email address will not be published. Required fields are marked *