Google에서 내 문제를 검색했지만 이에 대한 해결책을 찾지 못했습니다.SqlConnection 스레드로부터 안전한가요?
Windows 저널과 SQL 테이블에 로그를 저장하는 로그 클래스가 있습니다. 내 코드를 최적화하기 위해 하나의 SqlConnection 만 사용하고 싶습니다.
MSDN에서이 유형의 모든 공용 정적 (Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 모든 인스턴스 멤버가 스레드로부터 안전하다는 보장은 없습니다.
내 질문은 : 그것은 스레드 안전
private static readonly SqlConnection conn = new SqlConnection(ConfigParameters.Instance.UIDConnection);
입니까? 그렇다면 Open() 및 Close()를 사용할 때?
아니요, 그렇다면 어떻게 적절하게 사용합니까?
은 여기 내 전체 클래스 코드 : 사전에
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;
}
감사합니다 :) 그것은도록 SqlConnection을 공유 할 수있는 일반적인 방법이 아니다
입니다. codeproject.com/Articles/62249/Connection-Pooling-in-multithreaded-applications 해결책이 될 수 있습니까? – BaptX
왜 하나의 연결 만 사용 하시겠습니까? 스레딩 문제를 방지하기 위해 오버 헤드가 증가합니다. ADO.NET에는 이미 연결 풀링 기능이 내장되어 있으므로 '연결 사용'문에서 해당 연결을 사용하여 지정된 연결을 사용하는 시간을 최소화 할 수 있습니다. – Tim
또한 WCF와 관련이 없으므로 해당 태그를 제거 할 수 있습니다. – Tim