2012-11-09 67 views
-1

我有一個線程池,多線程,每當我嘗試啓動請求我得到C#HttpWebRequests代理誤差與多線程

Object reference not set to an instance of an object. 

Application.Run(new Form1()); 

我沒有同樣的問題,而不代理tho

這是造成問題的代碼

if (ProxyBox.Text != string.Empty) 
{ 
    lock (locker) 
    { 
     Random rnd = new Random(); 
     int rndd = rnd.Next(0, int.Parse(ProxyNumber.Text)); 
     request.Proxy = new WebProxy(proxysplit[rndd].ToString()); 
    } 
} 

Basicaly我想從proxysplit陣列每次

任何想法得到一個隨機代理?

回答

1

有您需要回答之前,我們可以幫你多的問題:

  1. 哪條線發生的錯誤?
  2. 是否指定了代理初始化(即不是null)?
  3. 此外,是proxysplit初始化?

檢查有什麼不初始化,您可能還需要生成介於0和元素的proxysplit數隨機數:如果您使用的ProxyNumber

if (ProxyBox.Text != string.Empty) 
{ 
    lock (locker) 
    { 
     Random rnd = new Random(); 
     int rndd = rnd.Next(0, proxysplit.Length); 
     request.Proxy = new WebProxy(proxysplit[rndd].ToString()); 
    } 
} 

所得整數超出了數組長度範圍爲proxysplit,那麼當嘗試訪問超出範圍的元素時(例如ArgumentOutOfRangeException),您也可能會遇到異常。

+0

我不知道錯誤發生在哪一行上? 肯定有我在嘗試訪問 代理數組proxysplit是全局字符串[] 嘗試與proxysplit.Length之前,相同的結果 –

+0

@FaTaL_ErRoR如果你不知道哪一行錯誤發生,然後我們該怎樣幫助你?我確定它會告訴你在拋出異常時發生異常的那一行,所以請提供堆棧跟蹤。此外,使用您的調試器遍歷代碼並查看發生異常的時間。 **最後:你沒有回答我的任何問題。**當然,數組中可能有** **代理,但** all **數組的元素已初始化?更重要的是:您嘗試訪問的元素是否已初始化? – Kiril