2012-02-24 5 views
0

現在、データベース呼び出しを行い、何らかの作業をしてから数秒待って再度実行するWindowsサービスに取り組んでいます。私は作業中にデータベースに接続しなければならず、オブジェクトが完了したら私が知っているどこかでデータベース接続を維持したいと考えています。ウェブサイトのHttpContextのようなWindowsサービスコンテキスト

私はHttpContextのようなものを使うことを考えていましたが、明らかにWindowsサービスにはそういうものはありません。各通話後に自分の接続が適切に処理されるようにする最良の方法は何ですか?

+0

IMHO:通常、私は接続を閉じて、オブジェクトの廃棄について心配しないでください。 CLRはバックグラウンドで接続プーリングを行い、すべての参照を削除した接続をいつ、どのように廃棄し、再利用するかを決定します。あなたがパフォーマンスの問題を抱えている場合にのみそれについて心配してください。 – Bill

答えて

0

常にという静的なものがあります。プロパティが可能です。したがって、クラスの静的変数にその変数を保持することができます。

public class ServiceContext 
{ 
    public static DbConnection Connection {get; set;} 
} 

しかし、これは良くない習慣です。

  1. 操作をクラスでカプセル化します。これにより、接続が実行され、接続が閉じられます。
  2. 操作を実行するには、非同期パラダイムを使用します。データベースの呼び出しが行われている間は、サービスの主な操作に煩わされていないことを確認します。

ベストはTPL:Task<T>を使用することです。

関連する問題