0
public class Foo
{
public int Count { get; set; }
}
public class FooHandler
{
private ConcurrentDictionary<string, Foo> FooHash = new ConcurrentDictionary<string, Foo>();
public IncrementFoo(string key)
{
FooHash[key].Count++;
}
}
このようにFooエントリのプロパティを更新できますか?それはスレッドセーフです(つまり、このシナリオではインデクサーアトミックを取得または設定していますか)。ConcurrentDictionaryのスレッドセーフでindexの値をプロパティで更新していますか?
ConcurrentDirectoryは、スレッドセーフである、あなたのFooクラスのスレッドセーフなことはありません。 。そして、そうではありません、変数をインクリメントすることは決して安全ではありません。少なくともInterlocked.Increment()が必要です。プロパティのバッキングストアを増やすか、ロックしてください。 –
@HansPassantプロパティに 'Interlocked'を使うことはできません。 – Servy