我正在使用奇妙的SmartThreadPool
來排隊一堆解析任務。Smartthreadpool - 在線程排隊時很慢
所以基本上會發生的是,當用戶點擊按鈕開始時,程序將循環通過不同的列表,並基於這些列表將啓動不同的工作(注:這可能是500.000工作)。
我排隊這樣的:
private void button1_Click(object sender, EventArgs e)
{
button1.Enabled = false;
button2.Enabled = true;
stpStartInfo.MaxWorkerThreads = Convert.ToInt32(parserThreadCount.Value);
stpStartInfo.MinWorkerThreads = 1;
_smartThreadPool2 = new Smart.SmartThreadPool(stpStartInfo);
........
foreach (string engine in _checkedEngines)
{
query = lines[i];
_smartThreadPool2.QueueWorkItem(
new Amib.Threading.Func<string, string, int, int, int>(scrapeFunction),
query, engine, iia, useProxies);
iia++;
}
}
所以問題是,用戶必須等待(接口幾乎掛起)排隊像200.000+線程..
理想的解決辦法時,是爲了讓已經排隊的線程開始,然後排隊在後臺其餘的..但不知道我能做到這一點..
任何想法? :)
你需要在UI線程上排隊的任何原因? – igrimpe