Windowsタスクスケジューラを介して実行しているC#アプリをいくつか作成しました。それらは正常に実行されていますが(ログファイルからわかるように)、Windowsタスクスケジューラは最後の実行結果を返すことを示しています0xE0434352
。Windowsタスクスケジューラに成功コードを返すために、C#アプリケーションで行う必要があることはありますか?
12 に答える
もう 1 つのオプションは、Windows イベント ビューアからアクセスできるアプリケーション ログを使用することです。.Net エラーはアプリケーション ログに記録されます。
これらのイベントは次の場所で確認できます。
イベント ビューアー (ローカル) > Windows ログ > アプリケーション
新しいウィンドウでジョブをセットアップする場合、「program/script」と「Start in(Optional)」の 2 つのフィールドがあります。プログラム名を最初に、プログラムの場所を 2 番目に入力します。これを行わず、プログラムが exe のあるディレクトリ以外で起動すると、そのディレクトリにあるファイルが見つかりません。
Hans Passant は正しかったです。ここで説明されているように、AppDomain.CurrentDomain.UnhandledException のハンドラーを追加しましたhttp://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception(v=vs.71).aspx発生していた例外を見つけて修正できました。
この問題は .Net フレームワークのバージョンが原因でした。ビルドをフレームワーク 4.0 にアップグレードしましたが、これはアプリケーションが使用していたいくつかの通信 dll に影響を与えているようです。フレームワーク 3.5 にロールバックしたところ、問題なく動作しました。
同じエラーが発生しましたが、ファイルの読み取りパスを"ConfigFile.xml"から AppDomain.CurrentDomain.BaseDirectory.ToString() + "ConfigFile.xml"に変更して修正しました。
私の場合、タスクマネージャは初期パスとして「System32」からプログラムを開始するため、ファイルパスエラーが原因でこのエラーが発生しましたが、フォルダは想定していました。