2017-12-03 336 views
0

所以我有一個服務實例化一個對象數組,然後爲這些對象啓動一個新的進程。在從另一個線程中的對象獲取一些數據之前,我等待實例化和新進程啓動。出於某種原因,當我嘗試讀取數據時,我會跳出界限索引。它似乎試圖訪問比我定義的更大的索引(當最後一個索引是Os [3]時嘗試訪問Os [4]),因此超出限制?這可能是什麼原因造成的?C#WCF服務越界數組索引

 lock (initlock) 
     { 
      for (threadNum = 0; threadNum < 4; threadNum++) 
      { 
       Os[threadNum] = new myO(); 
       Thread TOs[threadNum] = new Thread(new ThreadStart(Os[threadNum].ProcessData)); 
       TOs[threadNum].Start(); 
      } 
     } 

     lock (initlock) 
     { 
      for (int i = 0; i < 4; i++) 
      { 
       Thread rd[i] = new Thread(new ThreadStart(() => Os[i].GetData()); 
       rd[i].Start(); 
      } 
     } 

回答

4
for (int i = 0; i < 4; i++) 
{ 
    int index = i; 
    Thread rd[index] = new Thread(new ThreadStart(() => Os[index].GetData()); 
    rd[index].Start(); 
} 

this answer

+0

正是我的問題,謝謝 – skevthedev