2011-11-12 97 views
2

我有需要訪問MSSQL的多線程應用程序。我創建了一個靜態方法類,其中每個方法如下所示:多線程應用程序中的靜態類/方法

public static int [] Login(string [] LoginDetails) 
    { 
     using (SqlConnection connection = new SqlConnection(CS)) 
     { 
} 

這是正確的嗎?我沒有多線程經驗,但我想每個線程都會運行這個靜態方法的「複製」和它的變量,所以他們不會被共享。我假設如果我在類級別聲明靜態成員(如sqlConnection)並將其設爲靜態,它將被共享,因此它會導致併發訪問問題。

+1

「因此」什麼?上面的變量'connection'對於每個方法運行都是本地的,這是正確的。 – bzlm

+0

在我看來,這種方法不需要是靜態的。在這種情況下,請不要擔心線程,因爲數據庫引擎是專門爲處理和優化併發性而設計的,並且會爲您處理多個連接和一切。 –

回答

3

這並不是說它「複製」了方法本身,而是每個方法調用(不管是在同一個線程遞歸還是不同的線程中)確實會得到它自己的一組單獨的局部變量。

只要沒有任何數據在線程之間以可變的方式共享,你應該沒問題。

(順便說一句,這是更地道,以包括類型旁邊的名稱的陣列部分,沒有空格 - 所以int[]代替int []