Принудительное завершение работы приложения (.net) - PullRequest
7 голосов
/ 28 октября 2008

Я пытаюсь принудительно завершить работу моего приложения и вернуть код выхода. Посмотрел MSDN, и я вижу, что в WPF в Приложении есть метод Завершения работы, который принимает код ошибки в качестве параметра, но его нет для System.Windows.Forms.Application.

Я вижу Application.Exit (), но не могу вернуть код ошибки.

Кто-нибудь знает, если это возможно?

Спасибо

Ответы [ 3 ]

13 голосов
/ 28 октября 2008

Вы можете использовать System.Environment.Exit (yourExitCode).

2 голосов
/ 28 октября 2008

Добавьте свойство ExitCode (или что-то подобное) к классу формы:

class MyForm : Form {
  public int ExitCode { get; set; }

  void ShutDownWithError(int code) {
    ExitCode = code;
    Close();
  }
}

Где-то в вашем коде у вас есть:

static void Main() {
  // ...
  MyForm form = new MyForm();
  Application.Run(myForm);
}

Измените это на:

static void Main() {
  // ...
  MyForm myForm = new MyForm();
  Application.Run(myForm);
  Environment.Exit(myForm.ExitCode);
}

Когда в вашей форме вызывается метод ShutdownWithError, вы закрываете основную форму. Это выпрыгнет из цикла, начатого с Application.Run. Затем вы просто получаете код завершения и завершаете процесс с помощью Environment.Exit.

2 голосов
/ 28 октября 2008

установить свойство ExitCode в классе System.Environment и при выходе. например,

System.Environment.ExitCode = 1
Application.Exit()
...