これは私の質問です:
メソッド実行のタイムアウトをどのように処理できますか。シナリオは次のとおりです。
C#.Net Framework4.0Windowsサービスアプリケーションがあります。(特定の会社の特定のソフトウェアの)外部COMアセンブリへの参照を追加しました。このアセンブリでは、Windowsサービス上のサードパーティソフトウェアに対していくつかの情報を処理し、X分ごとにそのタスクを繰り返すことを意図していました(ユーザーが定義)。これは完璧なシナリオでうまく機能します。問題は、サードパーティソフトウェアに問題があり、アセンブリが応答せず、Windowsサービスが応答なしでその実行でスタックする場合です。たとえば、これはその実行のコードです。
var calObj = new CAL.Object(CalOperatins.SendNoSavingChanges);
//this SYNC execution method sometimes get stuck and
//the rest of the program just doesn't executes
calObj.TerminateUserSession();
log.Log4Text(string.Format("Service cycle ended, waiting {0} for next execution.",paramTime));
}
コードのコメントで述べたように、TerminateUserSessionの実行は同期的であり、そのソフトウェアが何らかの問題を実験すると、サービスがそこでスタックし、Log4Textメソッド(およびその下のすべて)が実行されません。
それは外部アセンブリであり、そのコードを変更できないことを念頭に置いて、そのTerminateUserSessionメソッド実行のタイムアウトを処理できる方法はありますか?(はい、タイムアウトがないためにプログラムが間違っていることがわかります)
前もって感謝します。