

時間差で複数のタスクを実行しています。

タスクAがDictionaryを作成中にタスクBがDictionaryの作成を開始すると、  
「同一のキーを含む項目が既に追加されています。」  
と重複エラーが発生してしまいます。  
タスクの開始時間の差を十分に開けて、各タスクのDictionary作成タイミングが重ならなければこのようなエラーは起きません。

インスタンスは別で作成しているのにDictionaryの重複エラーが起きてしまう原因はなぜでしょうか。  
また、できればこの構成を変えず、時間差を開ける以外で回避策はあるでしょうか？

宜しくお願いします。

program.cs

[code]

    var Task_A = Task.Factory.StartNew(() =>
        {                
            Thread.Sleep(100);
            DataAccsess dataAcs = new DataAcs();
    
        });
    
    var Task_B = Task.Factory.StartNew(() =>
        {                
            Thread.Sleep(500);
            DataAccsess dataAcs = new DataAcs();                
        });
    
[/code]

DataAccsess.cs

[code]

    Dictionary dic;
    
    public DataAccsess()
    {
        var stateDic = new States();
        this.dic = stateDic.GetStateDic();
    
        /* その他処理 */
    }
    
[/code]

States.cs

[code]

    Dictionary dic;
    public Dictionary<string,string> GetStateDic()
    {
        dic = new Dictionary<string, string>()
        dic.Add("State1", ConfigurationManager.AppSettings["State1Name"]);
        dic.Add("State2", ConfigurationManager.AppSettings["State2Name"]);
    
        /* 中略 */
    
        dic.Add("State16", ConfigurationManager.AppSettings["State16Name"]);
    
        return dic;
    }
    
[/code]


CC BY-SA 4.0
2018-07-05T00:27:29.633
45321
2018-07-05T00:27:29.633
19580
question
c#
マルチタスクでのDictionary作成で重複エラーが起きてしまう。