我有一個字典,其中包含數據,我有處理併發客戶端請求的線程。我希望某些客戶端請求在需要時更改字典中的值,但不知道在處理線程和類時如何解決範圍問題。C#更新字典在不同的類
的什麼,我試圖做一個簡單的例子如下:
class Program
{
public static Dictionary<string, int> teamInformation = new Dictionary<string, int>();
static void Main(string[] args)
{
runserver();
}
static void runServer()
{
//connection stuff
while(true)
{
threadRequest = new Handler();
Thread t = new Thread (() => threadRequest.clientInteraction(connection));
t.Start();
}
}
class Handler
{
public void clientInteraction(Socket connection)
{
//does stuff
teamInformation.Add(pTeamName, 0); //where pTeamName has been read from the client input
}
}
我怎麼會去結交Handler類更改詞典(這需要所有線程可訪問)?
我不知道如何爲線索編制索引或者至少在詞典條目中標記它們。我很難找出將特定值發送到特定線程的方法。
使用[ConcurrentDictionary](https://msdn.microsoft.com/zh-cn/library/dd287191( v = vs.110).aspx) – stuartd
@stuartd這似乎正是我需要感謝。我現在正在研究它。但是我是否需要每次在Handler類中聲明Concurrent Dictionary?是否會爲所有線程編輯具有相同名稱的字典?或者只是簡單地創建與每個線程相關的多個併發字典 – James