![]() |
|
Модераторы: gambit, Partizan |
![]()
|
|
| Loncaster |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 106 Регистрация: 8.8.2006 Репутация: нет Всего: нет |
Вообщем есть такой фрагмент кода...
Так вот после окна с ошибкой, программа не завершается а идет дальше и уже выкидывает иссключение на этой строке:
Как закрыть сразу прогу, чтобы она не шла дальше? --------------------
Ще не вмерла Україна... |
||||
|
|||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
После this.Close добавить return;
-------------------- ![]() |
|||
|
||||
| Loncaster |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 106 Регистрация: 8.8.2006 Репутация: нет Всего: нет |
если добавляю return то получаю иссключение
Если второе, то ничего не происходит, и выдается иссключение походу программы.. --------------------
Ще не вмерла Україна... |
|||
|
||||
| mr.DUDA |
|
||||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
Это потому что после Close нельзя работать с формой, судя по call stack-у форма пытается стать видимой после Close.
Действительно, этот вариант не работает. Вариант, который работает в 100% случаев:
И соответственно, при желании можно его обработать в Main(), добавив try...catch(ThreadAbortException). Добавлено @ 23:35 Хз почему, но не при отладке всегда кидает исключение, даже если взять Application.Run (...) в try-catch. Похоже я поспешил с советом, сорри, Loncaster. -------------------- ![]() |
||||
|
|||||
| Loncaster |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 106 Регистрация: 8.8.2006 Репутация: нет Всего: нет |
--------------------
Ще не вмерла Україна... |
||||
|
|||||
| -ser- |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 1.2.2005 Репутация: 4 Всего: 13 |
mr.DUDA, ну ты же сам лучше других знаешь, ибо сам здесь как-то писал что Thread.CurrentThread.Abort(); не завершает работу потока а только бросает Exeption. Ну да, ты приписал ниже ... при желании ... . Есть желание закрыть сразу. может здесь имеет значение где исходный фрагмент кода находится, например
-------------------- "Тонкая, однако, работа." |
||||||
|
|||||||
| Naum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 743 Регистрация: 7.9.2005 Где: Саратов, ул. Поса дского, 298 Репутация: 1 Всего: 15 |
-ser-, а это во всех фрэймворках? Потому что у меня такая же проблема была, но только во втором. В первом, если не запущено дополнительных потоков. this.Close() всегда сразу закрывает приложение. Это сообщение отредактировал(а) Naum - 25.11.2006, 11:57 -------------------- У нас всего два праздника Новый год и ТЯПница. |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
Close закрывает форму - равносильно выходу из приложения, если форма главная, т.е. открыта в Main, но у Loncaster-а похоже проблемы с обработчиками событий, которые генерятся по ходу закрытия формы. 90% что есть обработчик типа VisibleChanged или что-то в этом духе (фокус etc.).
-------------------- ![]() |
|||
|
||||
| Loncaster |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 106 Регистрация: 8.8.2006 Репутация: нет Всего: нет |
В программе есть несколько потоков, кроме главной формы. + форма использует иконку в трее, т.е. сворачивается туда и т.д. =)
Воощем, как мне все таки решить проблему? =) --------------------
Ще не вмерла Україна... |
|||
|
||||
| Bishop |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 188 Регистрация: 3.6.2005 Где: Минск, Беларусь Репутация: 2 Всего: 16 |
А Application.Exit() не подойдет?
|
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
Везде где не уверен - добавь проверку на IsDisposed формы. -------------------- ![]() |
|||
|
||||
| Loncaster |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 106 Регистрация: 8.8.2006 Репутация: нет Всего: нет |
Ниче не понял) Какую проверку, куда, зачем?) --------------------
Ще не вмерла Україна... |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
В обработчики событий, в методы которые работают с формой из другого потока, в перекрытые методы формы. В конце концов, посмотри в отладчике где валится твоё исключение
и если исключение генерит твой код - добавь в него проверку на IsDisposed там, где валится. -------------------- ![]() |
|||
|
||||
| -ser- |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 1.2.2005 Репутация: 4 Всего: 13 |
вот здесь и зарыта собака. и решение простое. Во-первых. существует несколько способов создавать потоки. нет смысла здесь все это приводить. проверь как они создаются у тебя и в зависимости от метода, который ты используешь при их создании, почитай доку по нему. ну а если лень, то решается это просто. перед закрытием формы заверши корректно потоки, либо при их создании указывай foreground = true, что означает что при закрытии основного, остальные тоже будут автоматически убиты, что не произойдет с потоками работаюшими в backgroundе, это единственное их отличие, всего лишь флаг. -------------------- "Тонкая, однако, работа." |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |