因此出現了一個新問題...C#多線程代理檢查器
我在c#中編寫了一個多線程代理檢查器。
我正在使用BackgroundWorkers解決多線程問題。
但我有問題協調和分配隊列中的代理隊列中的運行工人。它大部分時間都在工作,但有時候沒有結果返回,所以一些代理在這個過程中會「失去」。
該列表表示隊列,並在ListView中填充了proxys的id。
private List<int> queue = new List<int>();
private int GetNextinQueue()
{
if(queue.Count > 0)
{
lock (lockqueue)
{
int temp = queue[0];
queue.Remove(temp);
return temp;
}
}
else
return -1;
}
以上就是我的方法來獲得在隊列中的下一個代理,我使用的lock語句來防止競爭條件,但我不確定它是否足夠,或者是否下降減緩的過程,因爲它使其他線程等待... (lockqueue是一個對象只是用於鎖定)
所以我的問題是,怎麼可能有些代理沒有得到檢查(即使ping失敗檢查應該返回的東西,但有時theres什麼都沒有)以及我如何優化此代碼的性能?
下面是我對這個問題http://pastebin.com/iJduX82b
認爲重要的,如果缺了點什麼就寫評論
謝謝:)
謝謝,非常漂亮的解決方案。 並感謝所有其他人的幫助,我非常感謝,但很遺憾,我只能接受一個答案。 現在我認爲「代理失敗」的問題已經解決。 – Chilln 2010-06-29 16:04:20