我在Google上搜索了我的問題,但我沒有找到任何有關此問題的解決方案。SqlConnection線程安全?
我有一個日誌類將日誌放入Windows日誌和SQL表中。爲了優化我的代碼,我想只使用一個SqlConnection。
在MSDN中,它表示:此類型的任何公共靜態(Visual Basic中的Shared)成員都是線程安全的。任何實例成員不保證是線程安全的。
我的問題是:
private static readonly SqlConnection conn = new SqlConnection(ConfigParameters.Instance.UIDConnection);
是線程安全的?如果是,當使用Open()和Close()時?
如果沒有,如何正確使用SqlConnection?
這裏是我滿級代碼:
private static readonly SqlConnection conn = new SqlConnection(ConfigParameters.Instance.UIDConnection);
public static long WriteLog(string sSource, string sMessage, int iErrorCode, EventLogEntryType xErrorType)
{
// Windows Logs
if (ConfigParameters.Instance.WindowsLog)
EventLog.WriteEntry(sSource, sMessage, xErrorType, iErrorCode);
// SQL Logs
// TODO
return 0;
}
感謝提前:)
我發現這一點:HTTP:// WWW。 codeproject.com/Articles/62249/Connection-Pooling-in-multithreaded-applications它可以是一個解決方案? – BaptX
爲什麼你只想使用一個連接?這將增加您的開銷以防止線程問題。 ADO.NET已經具有內置的連接池,並且可以通過將'use'語句包裝到一個給定連接的時間來最小化它。 – Tim
另外,這與WCF無關,因此您可以刪除該標籤。 – Tim