0 / 0 / 0
Регистрация: 13.02.2019
Сообщений: 3
1

Вызов функции из mainWindow.xaml.cs в App.xaml.cs

15.06.2020, 12:33. Показов 3012. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день.
Суть в следующем: имеется WPF-приложение для чтения QR-кодов. Эти коды передаются в БД.
Планируется, что приложение будет стоять на автозагрузке и в конце рабочего дня компьютер будут выключать с кнопки, т.к. из устройств ввода будет подключен только сканер.

Мне нужно, если я правильно понимаю, при таком выключении компьютера сохранить все данные в БД (если есть несохраненное) и завершить работу. Для этого в App.xaml.cs есть события Application_SessionEnding и Application_SessionEnded.
Но вся основная работа идет в mainWindow.xaml.cs. Здесь объявлены все необходимые переменные для работы с БД, и здесь без проблем создать такую функцию на сохранение данных в базе.

Как ее вызвать при завершении работы ПК с кнопки?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.06.2020, 12:33
Ответы с готовыми решениями:

Доступ к полям MainWindow.xaml.cs из ViewModel
Здравствуйте пробую обычным способом получить доступ к полям MainWindow.xaml.cs или к public...

Открыть Form вместо MainWindow.xaml - form1.cs
В общем решил я изменить дизайн своей программы на C# - windows forms. Столкнулся с тем что в...

При переносе MainWindow.xaml в отдельную папку проект не билдится
Создаю хелоуворд-WPF приложение. Создаю папку View и переношу (перетаскиваю) MainWindow.xaml в эту...

Добавление данных в app.xaml.cs
В многих книжках читал о создании данных статичных в app.xaml.cs я добавил в свой private...

4
Эксперт .NET
1846 / 1353 / 428
Регистрация: 10.06.2011
Сообщений: 2,128
15.06.2020, 12:49 2
Подпишитесь так
C#
1
2
Application.Current.SessionEnding += OnSessionEnding;
Application.Current.SessionEnded += OnSessionEnded;
0
0 / 0 / 0
Регистрация: 13.02.2019
Сообщений: 3
17.06.2020, 19:29  [ТС] 3
Возможно, мы не совсем поняли друг друга. Постараюсь еще раз объяснить:
с вызовом события Application_SessionEnding нет проблемы. Я его могу вызвать из App.xaml.cs и оно срабатывает.
C#
1
2
3
4
5
6
private void Application_SessionEnding(object sender, SessionEndingCancelEventArgs e)
        {
                 
           //вот здесь должен быть вызов функции, расположенной в другом файле - MainWindow.xaml.cs.
                       
        }
В MainWindow.xaml.cs - это функция вида:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private void EndProgram()
{
     try
     {
        //сохранить данные в БД
     }
     catch(System.Data.Entity.Core.EntityException exConn)
     {
        //сохранить данные в файл
     }
     catch(exception ex)
     {
       //...
     }
}
Вопрос: верный ли ход мыслей и как эту функцию EndProgram вызвать из Application_SessionEnding?
0
Эксперт .NET
1846 / 1353 / 428
Регистрация: 10.06.2011
Сообщений: 2,128
17.06.2020, 20:26 4
Так я не понимаю, в чём проблема. Используйте то, что я написал выше
C#
1
2
3
4
5
6
7
8
9
public MainWindow()
{
  Application.Current.SessionEnding += OnSessionEnding;
}
 
private void OnSessionEnding(object sender, SessionEndingCancelEventArgs e)
{
  EndProgram();
}
1
0 / 0 / 0
Регистрация: 13.02.2019
Сообщений: 3
19.06.2020, 19:18  [ТС] 5
Спасибо, поняла, как сделать.
Работает при завершении работы или при выходе из-под пользователя.
Но, к сожалению, при выключении ПК с кнопки - не срабатывает. Как же тогда успеть поймать такое выключение ПК?
0
19.06.2020, 19:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.06.2020, 19:18
Помогаю со студенческими работами здесь

Как подключить стили из App.xaml?
VS 2019 Version 16.4.2. Создаю новый проект из шаблона 'WPF App (.NET Framework)'. В 'App.xaml'...

Передача обьекта xaml в другой обьект xaml
есть главное окно xaml <Window x:Class="test.MainWindow" ...

WPF app, верстка в XAML, сделать одну кнопку шире остальных
Алоха, друзья ) Сегодня весь день изобретал велосипед собирал свой первый калькулятор. Очень...

Динамическое добавление XAML в XAML
Перешел с Winows Forms на WPF буквально 6 часов назад если смотреть на Time Line, меня мучает...

Вызов объекта созданного в разметки xaml
Есть структура документа 1-Главная форма 2-документ1 3-документ1-frame 2-документ2 необходимо...

Вызов свойства кнопки на другом UserControl.xaml.cs
Возник вопрос получения свойства кнопки true на другом UserControl.xaml.cs. На первом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru