powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как определить причину закрытия приложения?
11 сообщений из 11, страница 1 из 1
Как определить причину закрытия приложения?
    #40049025
kikipumpa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Собственно, вопрос уже был , но на него так никто и не ответил
...
Рейтинг: 0 / 0
Как определить причину закрытия приложения?
    #40049033
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я вижу, по ссылке есть вопрос и есть ответ.
Если что-то осталось неясным, лучше всё-таки расшифровать.
...
Рейтинг: 0 / 0
Как определить причину закрытия приложения?
    #40049045
kikipumpa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro
Насколько я вижу, по ссылке есть вопрос и есть ответ.
Если что-то осталось неясным, лучше всё-таки расшифровать.


В WinForms есть событие FormClosed, и в обработчике из FormClosedEventArgs можно получить CloseReason - то бишь на крестик нажали, через диспетчер грохнули или комп вырубили.
Вот нужно так же, но на WPF.
...
Рейтинг: 0 / 0
Как определить причину закрытия приложения?
    #40049361
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kikipumpa
В WinForms есть событие FormClosed, и в обработчике из FormClosedEventArgs можно получить CloseReason - то бишь на крестик нажали, через диспетчер грохнули или комп вырубили.
Вот нужно так же, но на WPF.


Чем не устроил ответ в той теме 7836999 ?

Событие Closing, отмена закрытия через e.Cancel = true;.

Вы попробовали и у вас что-то не получилось?
...
Рейтинг: 0 / 0
Как определить причину закрытия приложения?
    #40049391
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для всего этого в WPF отдельные события
https://docs.microsoft.com/ru-ru/dotnet/api/system.windows.application?view=net-5.0
Windows.Closing
Application.Exit
Application.SessionEnding
...
Рейтинг: 0 / 0
Как определить причину закрытия приложения?
    #40049459
kikipumpa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Eld Hasp
kikipumpa
В WinForms есть событие FormClosed, и в обработчике из FormClosedEventArgs можно получить CloseReason - то бишь на крестик нажали, через диспетчер грохнули или комп вырубили.
Вот нужно так же, но на WPF.


Чем не устроил ответ в той теме 7836999 ?

Событие Closing, отмена закрытия через e.Cancel = true;.

Вы попробовали и у вас что-то не получилось?


Не устроил тем, что это ответ не на мой вопрос (и не на вопрос, который был задан в той теме)
Я не пробовал, потому что это не то, что мне надо.
Мне нужна причина закрытия.
...
Рейтинг: 0 / 0
Как определить причину закрытия приложения?
    #40049463
kikipumpa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes
для всего этого в WPF отдельные события
https://docs.microsoft.com/ru-ru/dotnet/api/system.windows.application?view=net-5.0
Windows.Closing
Application.Exit
Application.SessionEnding


А отловить закрытие через диспетчер как-нибудь можно? В Application такого события нет.
...
Рейтинг: 0 / 0
Как определить причину закрытия приложения?
    #40049502
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kikipumpa,

Смотря что вы понимаете под "закрытием из диспетчера".

Если это клик на вкладке " Приложения" Завершить задачу то да: приложению будет послано сообщение WM_CLOSE.


А если на вкладке "процесс" Kill task, то это можно считать грубым закрытием потому что процесс прерывается через TerminateProcess() и из него самого такой вызов отследить уже невозможно. Здесь нужны обходные шаги в виде другого мониторещего процесса
...
Рейтинг: 0 / 0
Как определить причину закрытия приложения?
    #40049544
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kikipumpa , вы бы детальнее описали реализуемую задачу.
По вашим описаниям совершенно не понятно, что что вам надо.

Необходимые детали:
1) Сколько окон в приложении?
2) Вам нужна обработка закрытия каких-то Окон или Приложения?
3) Какие механизмы "легального" закрытия Окна/Приложения есть в вашем Приложении?
4) Какие способы закрытия Окна/Приложения вам надо различать? Клик по кнопке в Окне, Alt-F4, Закрытие в Диспетчере задач и т.д.?

И учтите: Не все способы закрытия Приложения возможно отловить внутри Приложения.
Это относится ко всем типам Приложений: WPF, Формы, Консоль, Служба и т.д.
Допустим, выдернули штепсель питания компьютера из розетки.

kikipumpa
А отловить закрытие через диспетчер как-нибудь можно? В Application такого события нет.

Через "Диспетчер задач"?
В общем случае - нет.
И это не зависит от типа Приложения.

Если вам нужно отслеживать процесс приложения, вам надо сделать отдельную службу следящую за его процессом.
...
Рейтинг: 0 / 0
Как определить причину закрытия приложения?
    #40049653
kikipumpa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Eld Hasp
kikipumpa , вы бы детальнее описали реализуемую задачу.
По вашим описаниям совершенно не понятно, что что вам надо.

Необходимые детали:
1) Сколько окон в приложении?
2) Вам нужна обработка закрытия каких-то Окон или Приложения?
3) Какие механизмы "легального" закрытия Окна/Приложения есть в вашем Приложении?
4) Какие способы закрытия Окна/Приложения вам надо различать? Клик по кнопке в Окне, Alt-F4, Закрытие в Диспетчере задач и т.д.?


1) Может быть много, но количество не имеет значения
2) Приложения (это написано в вопросе)
3) Такие же, как и в любом приложении (их много?)
4) Все, которые можно различить (основные я уже указал)
Eld Hasp

И учтите: Не все способы закрытия Приложения возможно отловить внутри Приложения.
Это относится ко всем типам Приложений: WPF, Формы, Консоль, Служба и т.д.
Допустим, выдернули штепсель питания компьютера из розетки.

Спасибо, не знал, учту на будущее
Eld Hasp
Через "Диспетчер задач"?
В общем случае - нет.
И это не зависит от типа Приложения.

CloseReason.TaskManagerClosing в Формах
...
Рейтинг: 0 / 0
Как определить причину закрытия приложения?
    #40049681
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kikipumpa

1) Может быть много, но количество не имеет значения
2) Приложения (это написано в вопросе)
3) Такие же, как и в любом приложении (их много?)
4) Все, которые можно различить (основные я уже указал)

Eld Hasp
Через "Диспетчер задач"?
В общем случае - нет.
И это не зависит от типа Приложения.

CloseReason.TaskManagerClosing в Формах


В этом отношении Формы и WPF значительно отличаются друг от друга.
Формы разрабатывались очень давно и в них не заложена структурированность приложения.
WPF же уже в значительной мере рассчитан на хорошо развитую структуру приложения и явное разделение функционала слоёв приложения.
В такой структуре предполагается иерархия получение информации "родителей о детях".
И механизмы подобной передачи в WPF реализованы широко.
В основном это делается через механизм привязок и всплывающих событий.

А вот обратное получение информации "детей о родителях" в современной структуре приложения встречается редко.
Поэтому встроенных таких механизмов в WPF мало.

В том числе это касается и определения причины закрытия приложения (Forms.CloseReason).
Окно предназначено для Представления некоего набора Данных.
Если требование закрыть приложение исходит из Данных, то Окно может его получить по привязке или по событию.
Если же приложение закрывается по внешнему воздействию, то обработка его не относится к логике Окна.
Оно должно обрабатываться на уровне App.
И в большинстве случаев, оттуда даже не будет его передачи в Окно (или в Окна).
Допустим, при автосохранении команда из App может уйти сразу в репозиторий минуя и View, и ViewModel, и Модель.

Поэтому для вашей задачи в WPF нет некоего "общего места" где будут обрабатываться все возможные причины закрытия приложения.
Если вам действительно нужна подобная логика, то наиболее подходящее место для неё - это App.
Но реализовывать её придётся в большей части кастомно.

В целом достаточно сомнительна необходимость в таком.
Мне первый раз встречается потребность в реализации подобного.
Более вероятно, что вы пытаетесь "перетащить" привычные вам методы работы с Формами на WPF.
Это далеко не всегда уместно.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как определить причину закрытия приложения?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (1): Анонимы (1)
Пользователи онлайн (12): Анонимы (10), Bing Bot, Yandex Bot 5 мин.
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]