我有一个元素列表需要由两个进程更新。第一个是UI线程(由用户控制),第二个是从Web服务检索信息的后台进程。
由于这个第二个进程受到I/O限制,似乎适合使用异步任务。这引出了一些问题:
由于异步任务不在单独的线程上运行,因此更新此列表时似乎不需要任何类型的锁定,对吗?
另一方面,我们可以假设异步任务永远不会在单独的线程上运行吗?
我正在谈论一个Windows Forms应用程序。也许将来我想将其作为控制台应用程序运行。据我所知,在控制台应用程序中,异步任务在单独的线程上运行。询问任务是否在单独的线程上运行的首选惯用语是什么?这样我就可以在必要时建立锁。
我不知道我是否真的需要锁定的事实使我想知道这是否是最佳设计。对于这种IO绑定的代码,坚持使用
Task.Run()
是否有意义?