質問

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* 
}

(* を参照)。

いいえ、あなたの質問のコードは十分ではありません。あなたのクエリが例外をスローした場合は、適時に)それを(閉じませんし、それがガベージコレクタの通知、それまでぶら下がっ残されます。

あなたは他のユーザーによってまたはトライ/最終的な構造で、それ包む最低限に示すようにusingブロック内のオブジェクトを囲む必要があります。

あなたは通常、のIDisposableをのインターフェイスを実装し、その後クリーンアップする必要があるリソースを使用し、

クラス。これは、それがリソースを解放するために使用することができるのDispose()という関数を提供意味ます。

使い捨てオブジェクトの場合は、の文を使用してを使用することができます

using ( SomeDisposableClass c = new SomeDisposableClass() ) {

    // ... your code here

} // c.Dispose() automatically called here, freeing up resources
クラスが適切にコード化されている場合は、

、それはすべてのリソースを解放しなければならない - その廃棄()関数内 - などのデータベース接続、開いているファイルハンドル、それも。

これは、MySQLは、おそらくのDispose()でデータベースから切断することを意味し、あなたはおそらく、明示的c.Close()を呼び出す必要はありません - 。必ずするのではなく、常にドキュメントをチェック

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top