2

Unit of Work パターンで DataContext を使用することが受け入れられていることは知っていますが、MSDN から次のステートメントに出くわしました。

この型の public static (Visual Basic では共有) メンバーはすべて、スレッド セーフです。インスタンス メンバーは、スレッド セーフであるとは限りません。

私が読んだように、DataContext が static として宣言されている場合、それはスレッドセーフです。

http://msdn.microsoft.com/en-us/library/system.data.linq.datacontext.aspx

4

2 に答える 2

6

いいえ、それは正しくありません。

つまり、DataContextそれ自体の静的メンバーはスレッドセーフであり、静的インスタンスではありません。

これは、.NET のほとんどのクラスのほぼ標準であることに注意してください。(「ほとんど」が何を意味するかについての意見の不一致を考慮して)。の静的メンバーをすぐには認識しませんDataContext

于 2013-01-17T20:40:15.413 に答える
1

それは逆です。

インスタンス メンバーはスレッド セーフではありません。ただし、同じ共有インスタンスからインスタンス メンバーにアクセスしようとしています。

しかし、たとえオブジェクトがスレッド セーフであっても、長寿命のデータ コンテキストに対する第 1 レベル キャッシュの増大の結果を考えてみてください。スレッドが少なく、数十/数百/数千の同時呼び出しがあり、インスタンスがメモリ不足になる可能性があります。代わりに、オブジェクトがその役割を果たした後に破棄する必要があります。

于 2013-01-17T20:45:29.507 に答える