Należy podać kod wyjścia inny niż domyślna wartość 0 (co oznacza sukces). Można to zrobić za pomocą
Environment.Exit(someNumber)
Environment.Exit
Trzeba by mieć globalną obsługi wyjątku, aby to zrobić inaczej Uncaught wyjątkami. Ten blogu daje więcej szczegółów: http://jrich523.wordpress.com/tag/task-scheduler/
EDIT
Zrobiłem założenie, że problem został w aplikacji. Wiesz, co mówią o założeniach. Problem, okazuje się, jest w projektowaniu Task Scheduler. Jak wskazano tutaj:
How does Windows Task Scheduler in Win7 recognize a failed task?
które zostały zweryfikowane w testowaniu
Harmonogramu zadań systemu Windows nie bada kod wyjścia lub jakiekolwiek inne wartości gdy ukończy zadanie. Musisz obsłużyć każdy błąd przetwarzania w swoim własnym skrypcie lub programie.
Jeśli zajrzysz do historii zaplanowanego zadania, powinieneś zobaczyć dwa zdarzenia, Akcja zakończona, a następnie Zadanie zakończone. Jeśli zbadać Działanie ukończone, powinno to wyglądać mniej więcej tak:
Task Scheduler zakończone powodzeniem zadania "\ Test4", przykład "{a41adae0-a378-45f6-AADC-648d27852042}", akcja „C : \ blah..blah \ Release \ WpfApplication1.exe”z kodem powrotu 55.
Jak widać, aplikacja wyszła z kodem powrotu, ale nadal mówi Task Scheduler sukces. Jedyne rozwiązanie, jakie widzę, to obsłużenie tego poprzez kliknięcie prawym przyciskiem myszy pozycji historii i wybranie "Załącz zadanie do tego zdarzenia ...".
Można również uruchomić aplikację z pliku wsadowego i sprawić, aby plik wsadowy sprawdził kod zakończenia i podjąć odpowiednie działania. Następnie można użyć Harmonogramu zadań, aby zaplanować plik wsadowy zamiast planowania bezpośrednio aplikacji WPF.
Jeśli chodzi o zwrot kodu wyjścia z aplikacji WPF, konieczne może być kliknięcie prawym przyciskiem myszy właściwości projektu w programie Visual Studio, a na karcie Aplikacje wybierz opcję Aplikacja konsoli dla typu danych wyjściowych. Ponadto należy użyć kompilacji wydania w Harmonogramie zadań, a nie w wersji debugowania, aby upewnić się, że używany jest kod wyjścia aplikacji, a nie coś wygenerowanego z dodanych elementów debugowania. Można sprawdzić, czy Twoja aplikacja jest prawidłowo generowania kodu wyjścia poprzez ten mały plik wsadowy w tym samym folderze co plik exe i uruchomienie go (zastępując exe nazwę pliku swojej aplikacji):
wpfapplication1.exe
echo %errorlevel%
pause
oryginalnego kodu może pomyślnie ustawić kod wyjścia, ale zamknięcie systemu jest łagodniejszym wyjściem i może nie zakończyć się natychmiast (lub w ogóle), ponieważ będzie oczekiwać na wątki itp., aby zakończyć pomyślnie. Environment.Exit wyjdzie z większą siłą.
Czy próbowałeś wyjść z kodem powrotu innym niż domyślny 0? Zobacz http://stackoverflow.com/questions/155610/how-do-i-specify-the-exit-code-of-a-onsole-application-in-net – hatchet
Tak, próbowałem, ale zawsze dostaję sukces. –
możliwy duplikat [W jaki sposób Windows Task Scheduler w Win7 rozpoznaje nieudane zadanie?] (Http://stackoverflow.com/questions/1335551/how-does-windows-task-scheduler-in-win7-recognize-a-failed -task) – Gabrielius