0

C#でWindowsフォームからMySqlデータベースに対してクエリを実行した後、トレッドを閉じる適切な方法は何ですか?

単純な開閉で十分ですか?

conn.Open();

//querycode

conn.Close():
4

4 に答える 4

3

使用してみてください:

using(MySqlConnection conn = new MySqlConnection(connString))
{
    conn.Open();
} // conn is automatically closed and disposed at the end of the using block
于 2009-10-08T18:27:09.690 に答える
0

後でクリーンアップする必要があるリソースを使用するクラスは、通常、IDisposableインターフェイスを実装します。これは、リソースを解放するために使用できる Dispose() という関数を提供することを意味します。

使い捨てオブジェクトの場合、usingステートメントを使用できます。

using ( SomeDisposableClass c = new SomeDisposableClass() ) {

    // ... your code here

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

クラスが適切にコーディングされていれば、Dispose() 関数でデータベース接続、開いているファイル ハンドルなどのリソースを解放する必要があります。

これは、MySQL がおそらく Dispose() でデータベースから切断されることを意味するため、c.Close() を明示的に呼び出す必要はおそらくありませんが、必ずドキュメントを確認してください。

于 2009-10-08T18:27:50.673 に答える
0

usingこのように接続オブジェクトをブロックにラップすることもできます。

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

(※参照

于 2009-10-08T18:27:59.860 に答える
0

いいえ、あなたの質問のコードは十分ではありません。クエリが例外をスローした場合、適切なタイミングで Close() を行わず、ガベージ コレクターが気付くまでハングしたままになります。

他の人が示すように、オブジェクトをusingブロックで囲むか、少なくとも try/finally 構造で囲む必要があります。

于 2009-10-08T18:32:12.253 に答える