Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
2 / 2 / 0
Регистрация: 04.02.2025
Сообщений: 43

Настройки запуска App "OnExplicitShutdown"

10.02.2025, 10:28. Показов 2665. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день всем!

Настройки запуска App как ниже.


App.xaml

XML
1
2
3
ShutdownMode="OnExplicitShutdown"
    Startup="Application_Startup">
    <!--  StartupUri="Views/MainWindow.xaml"  -->

Чтобы не открывалось два окна MainWindow закомментила StartupUri.
Но что-то пошло не так... Может из-за того, что МainWindow спрятано в папку? Тогда как указать путь?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.02.2025, 10:28
Ответы с готовыми решениями:

Приложение не читает настройки из app.exe.config
Здравствуйте! Такое вопрос: скомпиленое приложение , не мое, настройки должны считаться из конфиг файла, который лежит рядом. Изменяются...

Настройки app.config перенести в код приложения
Добрый вечер. Подскажите пожалуйста, как можно данные файла app.config перенести непосредственно в код приложения, чтобы он рядом с...

App.config: где ещё хранить настройки
Доброго времени суток. Столкнулся с такой проблемой: дело в том что пространство имён System.ServiceModel использует для хранения...

31
23 / 20 / 5
Регистрация: 04.01.2020
Сообщений: 141
10.02.2025, 16:20
Студворк — интернет-сервис помощи студентам
Ну прикрепите вы оба проекта здесь своих, так быстрее и проще будет.
0
 Аватар для Andrey-MSK
3397 / 2283 / 388
Регистрация: 14.08.2018
Сообщений: 7,767
Записей в блоге: 4
10.02.2025, 17:16
Цитата Сообщение от Hertha Посмотреть сообщение
два event оба пока пустые.
Читать умеете?
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
Вас просили показать App.xaml.cs (полностью) того проекта, где работает без new MainWindow(), и тот же файл из второго проекта, где не работает...
Добавлено через 2 минуты
Wolfdp, Жаль offtop плюсовать нельзя

Добавлено через 29 минут
Hertha, Вот мой метод запуска приложения
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
protected override void OnStartup(StartupEventArgs e)
{
    base.OnStartup(e);
 
    IViewModelsService _viewModelsService = Current.Services.GetService<IViewModelsService>();
    IBackgroundTaskQueue _taskQueue = Current.Services.GetService<IBackgroundTaskQueue>();
 
    if (SingleInstance.AlreadyRunning())
    {
        Current.Shutdown(); // Just shutdown the current application, if any instance found.
    }
 
    // Для сигнала инсталятору о запущенном приложении
    _ = new Mutex(false, "DBClient");
 
    Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("ru-RU");
    Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("ru-RU");
    FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement),
          new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
 
    _viewModelsService
        .Register<MainWindowVM, MainWindow>()
        .Register<CPSAddSpecificationDetailDialogVM, CPSAddSpecificationDetailDialog>()
        .Register<CPSContractEditDialogVM, CPSContractEditDialog>()
        .Register<CPSContractSelectDialogVM, CPSContractSelectDialog>()
        .Register<CPSDetailsPreviewDialogVM, CPSDetailsPreviewDialog>()
        .Register<CPSHeadersPreviewDialogVM, CPSHeadersPreviewDialog>()
        .Register<DrawAddDialogVM, DrawAddDialog>()
        .Register<DrawEditDialogVM, DrawEditDialog>()
        .Register<DrawRenameDialogVM, DrawRenameDialog>()
        .Register<DSpecificationPreviewDialogVM, DSpecificationPreviewDialog>()
        .Register<EObjectAddDialogVM, EObjectAddDialog>()
        .Register<EObjectEditDialogVM, EObjectEditDialog>()
        .Register<EObjectsDialogVM, EObjectsDialog>()
        .Register<EObjectSelectDialogVM, EObjectSelectDialog>()
        .Register<GPlanAddDialogVM, GPlanAddDialog>()
        .Register<GPlanEditDialogVM, GPlanEditDialog>()
        .Register<GPlansDialogVM, GPlansDialog>()
        .Register<MDrawSummaryDialogVM, MDrawSummaryDialog>()
        .Register<MiMVehiclesAddDialogVM, MiMVehiclesAddDialog>()
        .Register<MiMVehiclesDialogVM, MiMVehiclesDialog>()
        .Register<MiMWorkAddDialogVM, MiMWorkAddDialog>()
        .Register<MiMWorksStatementDialogVM, MiMWorksStatementDialog>()
        .Register<MRAddSpecificationDetailDialogVM, MRAddSpecificationDetailDialog>()
        .Register<MSummaryPreviewDialogVM, MSummaryPreviewDialog>()
        .Register<NZPreviewDialogVM, NZPreviewDialog>()
        .Register<ONZCreateDialogVM, ONZCreateDialog>()
        .Register<ONZPreviewDialogVM, ONZPreviewDialog>()
        .Register<ONZRenameForemanDialogVM, ONZRenameForemanDialog>()
        .Register<ONZReportDialogVM, ONZReportDialog>()
        .Register<ONZSelectDialogVM, ONZSelectDialog>()
        .Register<WorkDrawDataSetDialogVM, WorkDrawDataSetDialog>()
        .Register<CPSSpecificationWindowVM, CPSSpecificationWindow>()
        .Register<CPSWindowVM, CPSWindow>()
        .Register<DDProgressWindowVM, DDProgressWindow>()
        .Register<DrawDetailsReportWindowVM, DrawDetailsReportWindow>()
        .Register<DrawEditWindowVM, DrawEditWindow>()
        .Register<LaborHBSearchWindowVM, LaborHBSearchWindow>()
        .Register<LaborHBWindowVM, LaborHBWindow>()
        .Register<MDrawEditWindowVM, MDrawEditWindow>()
        .Register<MiMProgressWindowVM, MiMProgressWindow>()
        .Register<MiMReportWindowVM, MiMReportWindow>()
        .Register<MRNZWindowVM, MRNZWindow>()
        .Register<MRPreviewWindowVM, MRPreviewWindow>()
        .Register<MRSpecificationWindowVM, MRSpecificationWindow>()
        .Register<MStorageDataInputWindowVM, MStorageDataInputWindow>()
        .Register<NZEditWindowVM, NZEditWindow>()
        .Register<NZViewingWindowVM, NZViewingWindow>()
        .Register<ONZEditWindowVM, ONZEditWindow>()
        .Register<ONZFactWindowVM, ONZFactWindow>()
        .Register<ONZViewingWindowVM, ONZViewingWindow>()
        .Register<ReportByDateWindowVM, ReportByDateWindow>()
        .Register<WorkDrawDataWindowVM, WorkDrawDataWindow>()
        .Register<WeldingHBDialogVM, WeldingHBDialog>()
        .Register<WeldingHBEditDialogVM, WeldingHBEditDialog>()
        .Register<WeldingWeldersWindowVM, WeldingWeldersWindow>()
        .Register<WeldingSpecificationWindowVM, WeldingSpecificationWindow>()
        .Register<WeldingSpecificationPreviewDialogVM, WeldingSpecificationPreviewDialog>()
        .Register<WeldingSpecificationHBWindowVM, WeldingSpecificationHBWindow>()
        .Register<WeldingSearchHBDialogVM, WeldingSearchHBDialog>()
        .Register<WeldingProgressWindowVM, WeldingProgressWindow>()
        .Register<DrawSpecificationVM, DrawSpecificationWindow>()
        .Register<GPlanDrawListWindowVM, GPlanDrawListWindow>()
        .Register<HBMachineDialogVM, HBMachineDialog>()
        .Register<HBMachineTypesDialogVM, HBMachineTypesDialog>()
        .Register<LaborHBGroupWindowVM, LaborHBGroupWindow>()
        .Register<MSGWorkersWindowVM, MSGWorkersWindow>()
        .Register<MSGWorkersReportWindowVM, MSGWorkersReportWindow>()
        .Register<PPWorkHBWindowVM, PPWorkHBWindow>()
        .Register<WeldingAddOrderDialogVM, WeldingAddOrderDialog>()
        .Register<PPWorkSetDialogVM, PPWorkSetDialog>();
 
    _taskQueue.Start();
 
    MainWindow = new MainWindow { DataContext = Current.Services.GetService<IMainWindowVM>() };
    MainWindow.Show();
 
    CheckFolders();
 
    CheckUpdates();
}
И само окно
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<Window x:Class="DBClient.Views.Windows.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:cvs="clr-namespace:System.ComponentModel;assembly=WindowsBase"
        xmlns:i="http://schemas.microsoft.com/xaml/behaviors" 
        xmlns:local="clr-namespace:DBClient.Views.Windows" 
        xmlns:behaviors="clr-namespace:DBClient.Behaviors"
        xmlns:windowsvm="clr-namespace:VModels.WindowsVM;assembly=VModels" 
        d:DataContext="{d:DesignInstance Type=windowsvm:MainWindowVM}"
        mc:Ignorable="d"
        WindowState="Maximized" d:Height="700" d:Width="1100" 
        Closing="Window_Closing" 
        Loaded="Window_Loaded">
Как видите оно тоже лежит в другом каталоге, даже во втором вложенном. Увидеть можно по namespace.
И App.xaml
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<Application x:Class="DBClient.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:DBClient"
             ShutdownMode="OnMainWindowClose">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Resources\Converters.xaml"/>
                <ResourceDictionary Source="Resources\Styles.xaml"/>
                <ResourceDictionary Source="Resources\Templates.xaml"/>
                <ResourceDictionary Source="Resources\Images\Excel.xaml"/>
                <ResourceDictionary Source="Resources\Images\ReloadImage.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>
Так что вариант только такой. Возможно, если MainWindow находится в корневом каталоге, то Application его и запустит без StartupUri, но опять же - возможно... А если в другом каталоге, то только через OnStartup().
0
2 / 2 / 0
Регистрация: 04.02.2025
Сообщений: 43
10.02.2025, 17:25  [ТС]
Wolfdp, ну извините сами просили

0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
11.02.2025, 01:44
Цитата Сообщение от Hertha Посмотреть сообщение
ну извините сами просили
Вы же видите, что вас не понимают.
Чем такие многокилометровые объяснения, лучше скиньте архив ВСЕГО Решения в сообщении.
В том варианте где у вас открывается ДВА окна.
Думаю вам тогда очень быстро смогут подсказать как исправить.
0
2 / 2 / 0
Регистрация: 04.02.2025
Сообщений: 43
11.02.2025, 18:14  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Вы же видите, что вас не понимают.
Чем такие многокилометровые объяснения, лучше скиньте архив ВСЕГО Решения в сообщении.
В том варианте где у вас открывается ДВА окна.
Думаю вам тогда очень быстро смогут подсказать как исправить.
Я в Пост №16 задала конкретный вопрос. Ну не знают они конкретного ответа, значит не знают.
Потом начинается какая-то отсебятина, делай именно так как мы делаем. Мне не нужно, то что не вписывается в рамки моего приложения.
Затем, рассказы каким образом они свои тушки к доктору носят.


Приложение 1

App.xaml
XML
1
2
Startup="Application_Startup">
    <!--  StartupUri="MainWindow.xaml"  -->
App.xaml.cs

C#
1
2
3
4
5
6
        private void Application_Startup(object sender, StartupEventArgs e)
        {
 
            ShutdownMode = ShutdownMode.OnExplicitShutdown; 
 
         }




Приложение 2

App.xaml
XML
1
2
Startup="Application_Startup">
StartupUri="MainWindow.xaml"
App.xaml.cs

C#
1
2
3
4
5
6
        private void Application_Startup(object sender, StartupEventArgs e)
        {
 
            ShutdownMode = ShutdownMode.OnExplicitShutdown; 
 
         }

Первое приложение меня устраивает, т.к. StartupUri закомментирован, то дубликат MainWindow не выскакивает.
Во втором приложении, если StartupUri закомментирован, вообще ни одного MainWindow не выскакивает, если раскомментировать, то сразу два MainWindow выскакивает.
Пытаюсь найти разницу.
Возник вопрос, откуда в Приложении 1 WPF знает путь StartupUri, ведь оно закомментировано?
Второй вопрос, что не так со вторым, почему не запускается MainWindow (1 экземпляр)? Два запускаются при раскомментировании StartupUri.
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
11.02.2025, 18:39
Мне аж интересно, что же там за мега секретный код, что вы боитесь выложить его сюда в полном объеме. Типа "вот вам две строчки, а остальное угадывайте сами что у меня там твориться в проекте." Больше смахивает что вы пришли сюда тупо потролить, поэтому специально не показываете весь App.cs и App.xaml
0
10 / 10 / 1
Регистрация: 10.09.2019
Сообщений: 232
11.02.2025, 19:13
Цитата Сообщение от Hertha Посмотреть сообщение
Возник вопрос, откуда в Приложении 1 WPF знает путь StartupUri, ведь оно закомментировано?
Второй вопрос, что не так со вторым, почему не запускается MainWindow (1 экземпляр)? Два запускаются при раскомментировании StartupUri.
Вопрос 1. зэр интерессант.
Вопрос 2.Hertha, у вас во время запуска Приложение 2 никаких исключений не происходит?
3.Wolfdp, допроситесь, начнут разворачивать на границе в аэропорту или в Веселом, лет так 3-5. Или вы уже релоцированы?
Hertha, лишнего не выкладывайте.
0
11.02.2025, 19:31

Не по теме:

Цитата Сообщение от кружок-ДДТ Посмотреть сообщение
Wolfdp, допроситесь, начнут разворачивать на границе в аэропорту или в Веселом
Мне это 100% не грозит.

0
2 / 2 / 0
Регистрация: 04.02.2025
Сообщений: 43
11.02.2025, 20:08  [ТС]
Цитата Сообщение от кружок-ДДТ Посмотреть сообщение
Вопрос 2.Hertha, у вас во время запуска Приложение 2 никаких исключений не происходит?
может и есть, но ничего не выскакивает, MessageBox.


Цитата Сообщение от кружок-ДДТ Посмотреть сообщение
3.Wolfdp, допроситесь, начнут разворачивать на границе в аэропорту или в Веселом, лет так 3-5. Или вы уже релоцированы?
наверное не резидент, либо релокант, либо тушку свою на моря не возит.

Цитата Сообщение от кружок-ДДТ Посмотреть сообщение
Hertha, лишнего не выкладывайте.
что есть , то то есть я же выложила все содержимое App.xaml, App.xaml.cs.
0
2410 / 1947 / 764
Регистрация: 27.07.2012
Сообщений: 5,582
11.02.2025, 21:07
Цитата Сообщение от Hertha Посмотреть сообщение
я же выложила все содержимое App.xaml
Цитата Сообщение от Hertha Посмотреть сообщение
XML
1
2
Startup="Application_Startup">
StartupUri="MainWindow.xaml"
Я правильно понимаю, что закрывающая скобка > относится к тэгу Application? К чему тогда относится StartupUri?
0
2 / 2 / 0
Регистрация: 04.02.2025
Сообщений: 43
11.02.2025, 22:32  [ТС]
Цитата Сообщение от John Prick Посмотреть сообщение
Я правильно понимаю, что закрывающая скобка > относится к тэгу Application? К чему тогда относится StartupUri?
Вы правы, должно быть так:

XML
1
2
Startup="Application_Startup"
StartupUri="MainWindow.xaml">
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
11.02.2025, 23:08
Цитата Сообщение от Hertha Посмотреть сообщение
задала конкретный вопрос. Ну не знают они конкретного ответа, значит не знают.
В том и дело, что не задали.
Это вам только кажется, что вы дали достаточную информацию.

Утрирую ваш вопрос вопрос.
Я выхожу из магазина в котором заплатила за 1 яблоко. А когда прихожу домой открываю сумку, в ней оказывается 2 яблока. Почему?

Добавлено через 2 минуты
Может вы сумку перепутали; может положили два, а заплатили за одно; может кто-то под дороге над вами подшутил и ещё мильон причин.
Имея отрывочную информацию невозможно сказать почему так получилось.

Если вы хотите получить конкретный ответ по вашей проблеме, то выложите полный код минимально необходимый для воспроизведения проблемы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.02.2025, 23:08

Как программно изменить настройки app.conf
Подскажите плз как программно изменить настройки app.conf. Если более конкретно, то хочу на клиентской стороне изменить значение двух...

Запуск окошек
Есть у меня вопрос. Я захотел сделать новый графический интерфейс и переделал свой проект с Visual C++ 6.0 на Visual C++ 7.1. Интерфейс...

Запуск процесса с параметрами
Добрый день! У меня проблемка...мне нужно запустить программу с параметрами(не моя..мне просто нужно чтобы она сделала необходимые...

Запуск программы без прав админа из программы с правами админа
Всем доброго времени суток... Проблема: Есть главная программа запущенная с правами админа и если из нее запустить скайп то он...

Запуск файла из программы
Никак не могу найти функцию. Программа является ланчером для другой программы, так вот как из моей программы запустить другую программу, и...


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

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru