【发布时间】:2015-10-08 22:17:52
【问题描述】:
我想要一个方法(我们称之为M1)在循环中执行一些async 代码(我们称之为第二个方法M2)。在每次迭代中 - UI 都应该使用 M2 的结果进行更新。
为了等待 M2,M1 需要为 async。但是 M1 应该在 UI 线程上运行(以避免竞争条件),因此它会在没有 await 的情况下被调用。
我这样认为,M1对UI的更新会在UI线程上是对的吗?
(额外:在这种情况下,async void 似乎没问题。这样对吗?)
【问题讨论】:
-
是的,看来你是对的。试着去做吧。
-
尝试会很棘手,因为在这种情况下通常不太可能出现竞争条件。我只是要小心,因为有人有时可能会遇到他们。
-
@ispiro 顺便说一句,如果你想尝试
Task.Delay(10)可能是创建真正异步方法的最简单方法。 -
@AlexeiLevenkov 感谢您的宝贵时间。我现在正在调查这整件事。如果它不在另一个线程上运行,我真的不明白异步有什么意义。无论如何,我现在正在阅读。再次感谢。
标签: c# .net multithreading asynchronous