Bạn nên chỉ định mã thoát khác với giá trị mặc định là 0 (có nghĩa là thành công). Bạn có thể làm điều này bằng
Environment.Exit(someNumber)
Environment.Exit
Bạn sẽ cần phải có một ngoại lệ xử lý toàn cầu để làm việc này cho trường hợp ngoại lệ khác còn tự do. bài viết trên blog này cho biết thêm chi tiết: http://jrich523.wordpress.com/tag/task-scheduler/
EDIT
tôi đã thực hiện một giả định rằng vấn đề là trong ứng dụng của bạn. Bạn biết họ nói gì về các giả định. Vấn đề, nó quay ra là trong thiết kế của Task Scheduler. Như đã chỉ ra ở đây:
How does Windows Task Scheduler in Win7 recognize a failed task?
mà tôi đã xác minh trong thử nghiệm
Windows Task Scheduler không kiểm tra mã thoát hoặc bất kỳ giá trị khác khi nhiệm vụ của bạn hoàn tất. Bạn phải xử lý bất kỳ lỗi nào khi xử lý trong tập lệnh hoặc chương trình của riêng bạn.
Nếu bạn nhìn vào lịch sử cho tác vụ đã lên lịch, bạn sẽ thấy hai sự kiện và Hành động đã hoàn thành, tiếp theo là Tác vụ đã hoàn thành. Nếu bạn kiểm tra các hành động đã hoàn thành, nó sẽ giống như thế này:
Task Scheduler nhiệm vụ hoàn thành "\ test4", dụ "{a41adae0-a378-45f6-aadc-648d27852042}", hành động "C : \ blah..blah \ Release \ WpfApplication1.exe "với mã trả về 55.
Như bạn thấy, ứng dụng đã thoát với mã trả về, nhưng Task Scheduler vẫn nói thành công. Giải pháp duy nhất tôi thấy là tự mình xử lý bằng cách nhấp chuột phải vào mục nhập lịch sử và chọn "Đính kèm tác vụ vào sự kiện này ...".
Hoặc, bạn có thể chạy ứng dụng của mình từ tệp lô và có tệp lô kiểm tra mã thoát và hành động tương ứng. Sau đó, bạn sẽ sử dụng Task Scheduler để lên lịch cho tệp batch thay vì lập lịch trình ứng dụng WPF của bạn trực tiếp.
Về việc trả lại mã thoát khỏi ứng dụng WPF của bạn, bạn có thể cần nhấp chuột phải vào thuộc tính dự án trong Visual Studio và trong tab Ứng dụng, chọn Ứng dụng giao diện cho Loại kết xuất. Ngoài ra, hãy sử dụng bản xây dựng bản phát hành trong Task Scheduler thay vì bản dựng lỗi để đảm bảo rằng mã thoát của ứng dụng của bạn được sử dụng, chứ không phải thứ gì đó được tạo ra từ các công cụ gỡ lỗi được thêm vào. Bạn có thể kiểm tra để xem nếu ứng dụng của bạn được tạo ra đúng một mã lối ra bằng cách làm ít batch file này trong thư mục với file exe của bạn và chạy nó (thay thế tên file exe của ứng dụng của bạn):
wpfapplication1.exe
echo %errorlevel%
pause
mã ban đầu của bạn có thể thiết lập thành công mã thoát, nhưng Shutdown là một lối thoát nhẹ nhàng hơn, và có thể không thoát ngay lập tức (hoặc ở tất cả), vì nó sẽ đợi các luồng vv để thoát ra một cách duyên dáng. Environment.Exit sẽ thoát ra mạnh mẽ hơn.
Bạn đã thử thoát với mã trả về khác 0 mặc định? Xem http://stackoverflow.com/questions/155610/how-do-i-specify-the-exit-code-of-a-console-application-in-net – hatchet
Có, tôi đã thử nhưng tôi luôn luôn thành công. –
có thể trùng lặp của [Windows Task Scheduler trong Win7 nhận ra một nhiệm vụ không thành công như thế nào?] (Http://stackoverflow.com/questions/1335551/how-does-windows-task-scheduler-in-win7-recognize-a-failed -task) – Gabrielius