문제

C#의 Windows 양식에서 MySQL 데이터베이스에 대해 쿼리를 실행 한 후 트레드를 닫는 올바른 방법은 무엇입니까?

이렇게 간단한 오픈이 충분히 가까이 있습니까?

conn.Open();

//querycode

conn.Close():
도움이 되었습니까?

해결책

사용해보십시오 :

using(MySqlConnection conn = new MySqlConnection(connString))
{
    conn.Open();
} // conn is automatically closed and disposed at the end of the using block

다른 팁

당신이하는 방식은 괜찮습니다. 연결 객체를 랩핑 할 수도 있습니다. using 다음과 같은 블록 :

using (var con = new MySqlConnection(/*connection string*/))
{
    con.Open();
    //do stuff
    // con.Close(); //don't need this it will be closed automatically* 
}

(*보다)

아니요, 귀하의 질문의 코드는 충분하지 않습니다. 쿼리가 예외를 던지면 적시에 닫지 않으며 쓰레기 수집가가 눈에 띄게 될 때까지 매달려있을 것입니다.

a using 다른 사람이 표시된대로 또는 최소한의 최소한으로 시도/마침내 구조로 포함합니다.

나중에 정리하는 데 필요한 리소스를 사용하는 클래스는 일반적으로 구현합니다. idisposable 상호 작용. 이는 리소스를 자유롭게 사용하는 데 사용할 수있는 Dispose ()라는 함수를 제공한다는 것을 의미합니다.

일회용 객체의 경우 사용할 수 있습니다 사용 성명:

using ( SomeDisposableClass c = new SomeDisposableClass() ) {

    // ... your code here

} // c.Dispose() automatically called here, freeing up resources

클래스가 올바르게 코딩 된 경우 데이터베이스 연결, 열린 파일 핸들 등이 Dispose () 함수의 모든 리소스를 확보해야합니다.

이는 MySQL이 Dispose ()의 데이터베이스에서 연결을 끊을 수 있음을 의미하므로 C.close ()를 명시 적으로 호출 할 필요가 없지만 항상 문서를 확인하여 확인하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top