2012-02-20 4 views
0

ここでは、C#.netウィンドウサービスを使用しています。それはFGとしてステータスを更新しますが、そのインスタンスでサービスを開始すると、ステータスがnullのレコードが正しく生成され、更新された場合、新しいレコードがデータベースに入ってくると仮定すると、別のインスタンスでこのスレッドが開始されませんでした我々はwantedly頻繁に新しいレコードをデータベースでチェックループがありすべきの問題は、C#.netを使用して異なるインスタンスのスレッドで発生しています。

using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew)) // Transaction Scope Started 
    { 
     try 
     { 
      if (threadCTD == null) 
      { 
       threadCTD = new Thread(new ThreadStart(FileGenerationForCTD)); // Thread Initialize for CTD 

       DataSet samdsCTD = new DataSet(); 
       DataAccessLayer objDbAccessCTD = new DataAccessLayer(); 
       samdsCTD = objDbAccessCTD.getFilesFromDataBase(strSelectProcedureName, "ECD"); 
       if (samdsCTD.Tables[0].Rows.Count > 0 && samdsCTD.Tables[1].Rows.Count > 0) 
       { 
        samdsCTD.Dispose(); 

        if ((threadCTD == null) || (threadCTD.ThreadState == System.Threading.ThreadState.Stopped) || (threadCTD.ThreadState == System.Threading.ThreadState.Unstarted) || (threadCTD.ThreadState == System.Threading.ThreadState.Aborted)) 
         threadCTD.Start(); // Thread Started for ITD 
       } 
       samdsCTD.Dispose(); 
      } 
     } 
     catch (Exception ex){} 
     finally 
     { 
      scope.Complete(); 
     } 
    } 
+1

投稿する前にコードを整理することができれば、本当に助けになるでしょう - 私たちが関連するビットを見ることができるように、より健全なインデントを行い、コメントアウトされた行などを取り除いてください。http://tinyurl.com/so-hintsを参照してください –

+0

@jon skeet要求通りです。私は同じことをしました。 – shannu

+0

本当にありません - すべての空白行と、それが必要な以上の*方法*の意図を見てください。 –

答えて

0

いずれかが私を導くことができ、この問題を解決する方法、サービスは、それが既存のレコードを取ったことを意味してください再起動しません。

あなたのコードには、新しいレコードのためにデータベースを繰り返しチェックしてチェックするこのループはありません。上に示したコードを呼び出す他のコードがありますか? はいの場合は、それも投稿できますか?

関連する問題