私は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 を使用します。