0

私はWindowsサービスを持っており、その中に無期限に実行されるべき2つのスレッドがあり(while(true))、両方とも同じスリープ時間です(これはwhile()の下で起こります)サービスが開始されると、両方のスレッドが開始され、特定の時点で動作しますその後、2 番目のスレッドは停止し、ログに痕跡が残りません。例外処理はすべてのレベルで行われます。

スレッドごとに異なるスリープ時間を設定することで、この問題を解決できましたが、これは最善のアイデアではないと思います。スレッドを初期化する方法は次のとおりです..

protected override void OnStart(string[] args)
    {
Associate = new Thread(new AssociateProc().Associator) { IsBackground = true, Name = "Associator" };
Associate.Start();
DISAssociate = new Thread(new AssociateProc().DisAssociator) { IsBackground = true, Name = "DISAssociator" };
DISAssociate.Start();
     }

ASSOCIATE & DISASSOCIATE メソッドの定義は

public void Associator()
{
  while (true)
  {
    try
    {
      //METHODS CALLED
    }
    catch(exception ex)
    {
       //Exception Handling
    }
    thread.sleep()
  }

}

より良い実装について教えてください。

シナリオが繰り返されるパターンを見つけようとしているときに..情報をフラットファイルに記録しているときに、複数のフラットファイルに書き込み、複数のファイルへの書き込みを開始すると、2番目のスレッドがトレースを残さずに停止することがわかりました。 .

ログの目的で Microsoft.Practices.EnterpriseLibrary.Logging を使用します。

4

0 に答える 0