2012-05-24 33 views
2

任何ThreadStatic屬性有任何屬性或線程,它創造的背景工人之間共享價值的一些方法?是否有父和子線程

我想提出一個SQL Server CLR組件確實在數據庫+一些計算的搜索,我希望它是多線程。我需要調用線程和我創作的背景工人之間共享一些數據(什麼是從數據庫調用線程讀取,我想傳遞給員工,讓他們計算出什麼,我需要)。

我不認爲發送一個類對象作爲參數傳遞給的RunWorkerAsync是一個好主意,因爲線程裏面我用鎖(項目);和Interlocked.Add(ref itemCount,-1);機制。

我還需要的是,如果其他搜索調用時,從這些2個調用棧的值不會混淆。

謝謝!

+0

你能解釋一下爲什麼你認爲給線程傳遞一個參數是個壞主意?提供一些代碼。這通常會吸引更多的興趣。 –

+0

問題是我需要傳遞一個Int變量。並且變量被複制,對吧?因爲它們不是指向類的指針。 –

回答

0

而不是使用ThreadStatic的變量,比如你想要的,你可能會考慮通過你的整數作爲參數,而不是通過它的原始,它包裝在一個holder對象。

class ResultHolder 
{ 
    public int result; 
} 

然後,您可以使用該對象來保存您的int通過引用。

Thread t = new Thread(Run); 
var holder = new ResultHolder() { result = 0x92 } 
t.Start(holder); 

// Query the result 
Console.WriteLine(holder.result); 
相關問題