【发布时间】:2020-06-22 03:21:54
【问题描述】:
在构造函数中我想调用一种方法类型:
private async Task OnLoadPrometDanKorisnikDatum
我想在它完成时等待那个方法,我有更多这样的方法(3),我想在后台线程中调用这 3 个方法,不要等他完成,只想等待第一个方法.我想让他们并行执行。 我有方法异步任务,在视图模型的构造函数中我这样调用
OnLoadPrometDanKorisnikDatum(KorisnikID, PomocnaDnDDatnaDat,
DatumVrednost).Wait();
OnLoadPrometNedelja(KorisnikID, PomocnaDnDDatnaDatNedelja).Wait();
如果我没有将 .Wait() 放在最后,程序将无法运行。我在调试模式下看到它们异步运行,但花费的时间告诉我它们是子(一种方法时间 + 第二种方法时间 + ....)。 有人可以帮帮我吗,这对我来说很重要......
【问题讨论】:
-
为什么必须在构造函数中?顺便提一句。您应该发布构造函数以向我们提供代码所在的上下文
-
在任务上调用
Wait()在许多情况下是一个很大的禁忌;如果这里的场景有一个同步上下文(我怀疑它确实有),那么你完全有可能这样做会死锁。基本上:不要那样做(或访问.Result);你不能在这里简单地await吗? -
@Sebastian Schumann 我尝试实施但没有成功。我实现了接口 public interface IAsyncInitialization { Task Initialization { get; } }--------------------------------public PrometPageViewModel(INavigationService navigationService, IPrometDanService servicePrometDan,IEventAggregator eventAggregator, Prism.Services .IPageDialogService pageDialogService, IAsyncInitialization asc) : base(navigationService)//,IEventAggregator ea {...Initialization = MyMethodAsync();}public Task Initialization { get;私人套装; }
-
抱歉,这段代码不可读。请张贴类似dotnetfiddle.net 之类的内容。你有什么问题?你只告诉我你没有任何成功,但我看不出你有什么问题。
标签: c# asynchronous mvvm xamarin.forms async-await