【发布时间】:2018-01-31 21:43:29
【问题描述】:
我有两项任务,其中一项我想在下一项开始之前完成。我已经尝试将它们变成一个任务并使用 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)
{
}
}
【问题讨论】:
-
您是否有权使用这些方法来使它们同步?无论如何,这就是您要求做的事情。
-
这正是你要做的,除了没有
Sleep()。await表示“等待此操作完成后再继续”。如果这没有发生,那么您的DataItem方法有问题。也许你可以告诉我们这是在做什么。 -
我无法控制 DataItem,它是我发送和接收数据的主机应用程序中的一种方法
-
如果“发送和接收”在停止等待后仍未完全完成,那么您将不得不与负责该主机应用程序的人一起处理。你真的没有什么可以做的。这不是等待任务的工作方式。
-
@GabrielLuci 这足以写成答案,恕我直言:-)
标签: c# asynchronous