C#多线程处理多个队列数据的方法

2019-12-26 12:29:58于海丽
  • //臨時數據,隨機數   V = R.NextDouble(); 
  • _Queue1.Add(V); //把數據插入到隊列1   Application.DoEvents(); 
  • ShowState();  Thread.Sleep(100);//生成隨機數太快,為了看清效果,暫停n毫秒  
  • }  } 
  •   //对queue1中的数据进行处理,处理后放到queue2中  
  • public static void Queue1Thread(object state)  { 
  • while (_Exit == false)  { 
  • while (_Queue1.Count > 0)  { 
  • //对queue1中的数据进行处理,处理后放到queue2中   _Queue2.Add(_Queue1[0]); 
  • _Queue1.RemoveAt(0);  Application.DoEvents(); 
  • ShowState();  } 
  • }  } 
  • //对queue2中的数据进行处理,处理后放到queue3中   public static void Queue2Thread(object state) 
  • {  while (_Exit == false) 
  • {  while (_Queue2.Count > 0) 
  • {  //对queue1中的数据进行处理,处理后放到queue2中  
  • _Queue3.Add(_Queue2[0]);  _Queue2.RemoveAt(0); 
  • Application.DoEvents();  ShowState(); 
  • }  } 
  • }  //用于監視各隊列狀態的線程  
  • public static void ShowState()  { 
  • string stateInfo =  QueueTester._Queue1.Count.ToString() " -> " 
  • QueueTester._Queue2.Count.ToString() " -> "  QueueTester._Queue3.Count.ToString(); 
  • try  { 
  • if (_OwnerForm != null)  { 
  • _OwnerForm.Invoke(_StateMethod, stateInfo);  Application.DoEvents(); 
  • }  } 
  • catch  { 
  • }  } 
  • }  }