2013-04-23 48 views
0

我使用線程池這樣起動線程:提交一個隊列中的線程池

ThreadPool.QueueUserWorkItem(new WaitCallback(outp), (object)new object[] { output}); 

輸出是一個隊列。

這是caled功能:

private void outp(object obj) 
    { 
     object[] arg = obj as object[]; 
     Queue<String> output = arg[0]; 
    } 

問題:ARG [0]不能轉換到隊列。如何才能正確地將隊列連接到線程池?

+4

投它??? ..... – Tigran 2013-04-23 09:04:08

+0

好嗎,該怎麼辦? – tux007 2013-04-23 09:05:17

+1

隊列輸出=(隊列)arg [0]; – Tigran 2013-04-23 09:06:16

回答

0

通行證隊列,而不是數組:

ThreadPool.QueueUserWorkItem(new WaitCallback(outp), output); 

使用隊列:

private void outp(object obj) 
{ 
    Queue<string> output = obj as Queue<string>; 
    // use queue here 
} 

BTW你不需要明確的創建回調委託。只是通過方法:

ThreadPool.QueueUserWorkItem(outp, output); 

也可以考慮使用ConcurrentQueue如果多個線程訪問您的隊列同時。