2

是否仍然需要在使用 async (AsyncCtpLibrary.dll) 调用的方法中对 SQL Compact 数据库等资源使用 lock 关键字?正如我从 Anders 的演讲中了解到的那样,异步处理都发生在同一个线程中,所以他们不应该需要它,还是我错了?目前,我在互联网上的任何地方都找不到有关此的任何信息。

谢谢

4

1 回答 1

2

AFAIK 异步基于 TPL 和任务 - 所以不,它们不会每次都在同一个线程上运行(或继续在同一个线程上),是的,你必须在设计时仍然考虑到并发性。异步只会帮助您以更好的方式将各个部分组合在一起。

需要明确的是:您的方法中的所有内容(如果只启动一次)将一次在一个线程中运行,但如果您共享资源,您将不得不考虑锁定或其他同步方法,就像您过去一直在做的那样。

如果您可以使用不可变数据 - 这样您可以将所有这些都剥离到最低限度,但您始终必须记住您的进程将在许多线程上运行(想到 UI 调度)。

于 2011-09-30T14:46:59.793 回答