Tôi đang viết một chương trình bàn điều khiển để chạy lịch trình tác vụ Windows. Phương thức Main()
của tôi có kiểu trả về là int
và tôi trả về các số khác nhau khi thoát để cho biết kết quả thực thi mà tôi có thể truy cập bằng mã số .BAT
là %errorlevel%
.Ứng dụng giao diện điều khiển C#: Giá trị trả về phương thức chính VS Application.ExitCode
Tuy nhiên khi gỡ lỗi trong VS2015, tôi làm một
return 255;
và tôi luôn luôn nhận được từ cửa sổ Output của VS2015:
The program '[43560] Foo.vshost.exe' has exited with code 0 (0x0).
Bây giờ nếu tôi muốn cửa sổ Output để hiển thị mã lối ra của chương trình của tôi, tôi phải làm một số Application.Exit(255)
để hiển thị
The program '[24400] Foo.vshost.exe' has exited with code 255 (0xff).
Điều gì lạ là %errorlevel%
được đặt chính xác thành 255 nếu tôi chạy chương trình theo số CMD.exe
với câu lệnh trả về hoặc Environment.Exit()
.
Vì vậy, câu hỏi của tôi là
là giá trị trả về của
Main()
hơi khác nhau đểEnvironment.ExitCode
?Cách dễ dàng tìm ra giá trị trả về của phương thức
Main()
trong VS2015 là gì?Khi thoát khỏi chương trình bảng điều khiển, là
Environment.Exit()
được ưu tiên hơn câu lệnh trả về đơn giản? Bởi vì một tuyên bố trở lại là ngắn gọn hơn với khẩu vị của tôi.
Ai đó có thể cho tôi biết câu chuyện đằng sau vấn đề này? Cảm ơn.
Xem thêm tài liệu phương pháp 'Environment.Exit (Int32)' (https://msdn.microsoft.com) /en-us/library/system.environment.exit.aspx) để biết danh sách các sự khác biệt. –
@JeppeStigNielsen Điểm tốt. Đã thêm ghi chú về nó trong trường hợp bình luận của bạn biến mất. – theB
* Thích * để thoát ra bằng cách trở về từ chính. Gọi 'Environment.Exit' là một hack, và không cần thiết trong một ứng dụng được thiết kế tốt. –