如何按特定顺序执行异步任务

时间:2018-01-31 13:31:30

标签: c# asynchronous

我有两个任务,其中一个我想在下一个任务开始之前完成。我已经尝试将这些转换为任务并使用task.Wait()但它们仍然在错误的时间执行。使用短暂的睡眠,但我想避免睡觉。

private async void BuildNextData(object sender, RoutedEventArgs e)
{
    try
    {
        await this._LocalCluster.DataItem(this._LocalSceneIID.IID.Value, ".Data.DataPopupNext", null, null, null);

        System.Threading.Thread.Sleep(500);

        object o = await GetVentuxIndex(".Data.DataPopupCurrentIndex");
        Workspace.This.MainJsonBond.SelectedfilteredPopupWorries = Workspace.This.MainJsonBond.filteredPopupWorries[Int32.Parse(o.ToString())];
    }
    catch (Exception ex)
    {

    }
}

1 个答案:

答案 0 :(得分:3)

除了没有Sleep()之外,这与你的方式完全相同。 await表示"等待此操作完成后再继续"。

如果"发送和接收" DataItem方法一旦停止等待就没有完全完成,那就是该方法中代码的错误。您将不得不接受负责该主机应用程序的任何人。你无能为力。这不是等待任务的工作方式。