2

非同期 (AsyncCtpLibrary.dll) で呼び出されるメソッドで、SQL Compact データベースなどのリソースで lock キーワードを使用する必要はありますか? アンダースの話からわかるように、非同期処理はすべて同じスレッド内で行われるため、必要ではないはずですか、それとも間違っていますか? 現時点では、インターネット上のどこにもこれに関する情報はありません。

ありがとう

4

1 に答える 1

2

AFAIK async は TPL と Tasks に基づいているため、毎回同じスレッドで実行されるわけではありません (または同じスレッドで続行されます)。はい、並行性を念頭に置いて設計する必要があります。非同期は、ピースをより良い方法でまとめるのに役立つだけです。

明確にするために: メソッド内のすべて (一度だけ開始した場合) は一度にスレッドで実行されますが、リソースを共有する場合は、常に行っていたのと同じように、ロックまたはその他の同期方法について考える必要があります。

不変データを使用できる場合 - この方法では、これらすべてを最小限に抑えることができますが、プロセスが多くのスレッドで実行されることを常に覚えておく必要があります (UI のディスパッチが思い浮かびます)。

于 2011-09-30T14:46:59.793 に答える