Как немедленно завершить приложение?
От: Аноним  
Дата: 01.03.05 12:39
Оценка:
Есть форма, которая в своем конструкторе еще до InitializeComponent() вызывает метод некоторого класса. В этом классе при определенных условиях может возникнуть Exception, при этом надо выдать выдать сообщение что дальнейшая работа невозможна и выйти из приложения.
Пишу:
catch(Exception ex)
{
  MessageBox("Blablabla");
  Application.Exit();
}

Exception возникает, блок catch отрабатывает, после чего спокойно продолжает выполняться конструктор вызвавшего этот метод оконного класса, сам при этом вызывая кучу левых Exception'ов, т.к. естесссссссно нужных данных он не получил...........
Можно ли завершить приложение сразу после Application.Exit()?????????
Re: Как немедленно завершить приложение?
От: DuШes  
Дата: 01.03.05 12:49
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть форма, которая в своем конструкторе еще до InitializeComponent() вызывает метод некоторого класса. В этом классе при определенных условиях может возникнуть Exception, при этом надо выдать выдать сообщение что дальнейшая работа невозможна и выйти из приложения.

А>Пишу:
А>
А>catch(Exception ex)
А>{
А>  MessageBox("Blablabla");
А>  Application.Exit();
А>}
А>

А>Exception возникает, блок catch отрабатывает, после чего спокойно продолжает выполняться конструктор вызвавшего этот метод оконного класса, сам при этом вызывая кучу левых Exception'ов, т.к. естесссссссно нужных данных он не получил...........
А>Можно ли завершить приложение сразу после Application.Exit()?????????

Наврядли, ты же пытаешься убить экземпляр класса в тот момент когда он еще полностью не сформирован, в данном случае Exit никак не сработает...имхо, лучше посмотреть в сторону DllImport(...TerminateProcess...
Re: Как немедленно завершить приложение?
От: ansi  
Дата: 01.03.05 12:53
Оценка:
А>Можно ли завершить приложение сразу после Application.Exit()?????????
Насколько я помню, в Дельфи это Application.Terminate()...
Если не поможет, то ExitProcess(exitcode).
Re: Как немедленно завершить приложение?
От: ansi  
Дата: 01.03.05 12:57
Оценка:
А это оказался не Дельфи...
Пора спать...
Re: Как немедленно завершить приложение?
От: Me_ Россия  
Дата: 01.03.05 13:10
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть форма, которая в своем конструкторе еще до InitializeComponent() вызывает метод некоторого класса. В этом классе при определенных условиях может возникнуть Exception, при этом надо выдать выдать сообщение что дальнейшая работа невозможна и выйти из приложения.

А>Пишу:
А>
А>catch(Exception ex)
А>{
А>  MessageBox("Blablabla");
А>  Application.Exit();
А>}
А>

А>Exception возникает, блок catch отрабатывает, после чего спокойно продолжает выполняться конструктор вызвавшего этот метод оконного класса, сам при этом вызывая кучу левых Exception'ов, т.к. естесссссссно нужных данных он не получил...........
А>Можно ли завершить приложение сразу после Application.Exit()?????????


Можно гнать эксепшн по стеку вверх до тех пор, пока не дойдет до Мэйна. Там ставишь блок try-catch и при эксепшне выходишь из функйии Мэйн.

Ну т.е. что-то вроде:

static void Main()
{
  try
  {
    Application.Run(new Form1);
  }
  catch(YourException)
  {
    MesageBox.Show("Smthg");
    return;
  }
}
}
Как немедленно завершить приложение?
От: Аноним  
Дата: 01.03.05 12:43
Оценка:
Thread.CurrentThread.Abort(); ?



данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Как немедленно завершить приложение?
От: GarryIV  
Дата: 01.03.05 13:15
Оценка:
Hello, !

> Есть форма, которая в своем конструкторе еще до InitializeComponent()

> вызывает метод некоторого класса. В этом классе при определенных условиях
> может возникнуть Exception, при этом надо выдать выдать сообщение что
> дальнейшая работа невозможна и выйти из приложения. Пишу:
>
 > catch(Exception ex)
 > {
 >   MessageBox("Blablabla");
 >   Application.Exit();
 > }
 >

> Exception возникает, блок catch отрабатывает, после чего спокойно
> продолжает выполняться конструктор вызвавшего этот метод оконного класса,
> сам при этом вызывая кучу левых Exception'ов, т.к. естесссссссно нужных
> данных он не получил........... Можно ли завершить приложение сразу после
> Application.Exit()?????????

Я представляю как весело будет отлаживать такое приложение
Обхохочешься....
Posted via RSDN NNTP Server 1.9
WBR, Igor Evgrafov
Re: Как немедленно завершить приложение?
От: dshe  
Дата: 01.03.05 13:19
Оценка: 2 (1) +1
Здравствуйте, Аноним, Вы писали:

А>Есть форма, которая в своем конструкторе еще до InitializeComponent() вызывает метод некоторого класса. В этом классе при определенных условиях может возникнуть Exception, при этом надо выдать выдать сообщение что дальнейшая работа невозможна и выйти из приложения.

А>Пишу:
А>
А>catch(Exception ex)
А>{
А>  MessageBox("Blablabla");
А>  Application.Exit();
А>}
А>

А>Exception возникает, блок catch отрабатывает, после чего спокойно продолжает выполняться конструктор вызвавшего этот метод оконного класса, сам при этом вызывая кучу левых Exception'ов, т.к. естесссссссно нужных данных он не получил...........
А>Можно ли завершить приложение сразу после Application.Exit()?????????

System.Environment.Exit(int)
--
Дмитро
Re[2]: Как немедленно завершить приложение?
От: edemoe  
Дата: 01.03.05 13:33
Оценка:
D>System.Environment.Exit(int)

Благодарствую! Усё на ура работает
Re: Как немедленно завершить приложение?
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.03.05 00:08
Оценка:
Здравствуйте, <Аноним>, Вы писали:

1.
System.Environment.Exit(-1);

2.
System.Diagnostics.Process.GetCurrentProcess().Kill();
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.