How to lock a dictionary?

前端 未结 3 999
情歌与酒
情歌与酒 2021-01-22 03:34

I have a static dictionary in a multi thread application. class A Reads the dictionary and class B Removes from it. I want to lock dictionary when removing from it or reading fr

3条回答
  •  灰色年华
    2021-01-22 03:48

    you can use lock

    lock (DicThreads)
    {
       // Any code here is synchronized with other
       // (including this block on other threads)
       // lock(DicThreads) blocks
    }
    

    However, if you have a dictionary of threads in your application, you are probably doing it wrong. Read all about the Task-Based Asynchronous Pattern (TAP) here.

    Stephen Cleary has wirtten a useful AsyncCollection class. Available in the Nito.AsyncEx package on NuGet.

    If you need an asynchronous collection its a good candidate, it actually takes a ConcurrentBag/Stack/Queue or some other IProducerConsumerCollection to provide backing state.

    Remember, as stated, you should not be managing the threads yourself, as illustrated in the question.

提交回复
热议问题