Advertisement

dotnet C# 多线程集合的 Linq 同步获取值并同时写入集合会导致异常

阅读量:

在集合发生变动的情况下,无论采用 foreach 循环方式还是利用 Linq 语句进行操作,即便是通过 FirstOrDefault 方法尝试获取首个元素,也可能会导致执行失败。例如以下代码示例,在两个并发线程中,第一个线程尝试使用 FirstOrDefault 方法获取数据,而第二个线程则对集合内容进行了修改。

复制代码
     static void Main(string[] args)

    
     {
    
         var list = new List<string>();
    
         Task.Run(() =>
    
         {
    
             while (true)
    
             {
    
                 var str = list.FirstOrDefault();
    
                 Console.WriteLine(str);
    
             }
    
         });
    
  
    
         Task.Run(() =>
    
         {
    
             while (true)
    
             {

全部评论 (0)

还没有任何评论哟~