【发布时间】:2016-10-19 06:07:43
【问题描述】:
我有以下方法
public async Task<T> SomeMethod(parameters)
{
// here we execute some instructions which are not thread safe
}
我需要 SomeMethod 来返回一个 Task,以便其他方法可以异步运行(等待)它,而不会阻塞 UI 线程。
问题是 SomeMethod 可以并行调用,因为执行返回到 UI 线程,这会引发异常,因为 SomeMethod() 中的某些调用不是线程安全的。
确保对 SomeMethod 的所有调用都排队(并且可以等待)并且该队列将按顺序执行的最佳方法是什么?
【问题讨论】:
-
异步方法需要同步,类似于同步方法。你需要一些同步机制,比如提到的 AsyncLock。
标签: c# multithreading thread-safety async-await