С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
33 / 33 / 18
Регистрация: 16.09.2015
Сообщений: 246
1

Исключение связанное с вызовом диалогового окна

09.02.2016, 17:03. Показов 701. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите исправить исключение: в экзэмпляре объекта не задана ссылка на объект
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
 
downloader dwnld_sdk = new downloader();
what_to.dwnld = new_sdk;
what_to.new_version = sdkSVersion;
if (loader.ActiveForm.InvokeRequired) //жалуется на эту строку
{
    loader.ActiveForm.Invoke(new MethodInvoker(delegate
    {
        dwnld_sdk.ShowDialog();
    }));
}
else
dwnld_sdk.ShowDialog();
Весь код

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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
        bool update = false;
        string new_launcher = "launcher.7z";
        string new_sdk = "sdk.7z";
        string new_mod = "mod.7z";
        string new_mod_pack = "ModPack.7z";
        string sdkSVersion;
        string updaterSVersion;
        string launcherSVersion;
        string modSVersion;
        string modpackSVersion;
 
        public void Check_Update()
        {   //ЕСЛИ ОПЦИЯ ПРОПУСТИТЬ ПРОВЕРКУ ОБНОВЛЕНИЙ НЕ АКТИВИРОВАНА ТО
            if (options.load("SkipUpd") == "0")
            {
                print_txt("Проверка наличия обновлений...", "Check for updates...");
               // try
               // {
                    string ServerV = "http://superpower2.ru/realism2016/v.txt";
                    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(ServerV);
                    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                    using (StreamReader reader = new StreamReader(response.GetResponseStream()))
                    {
                        updaterSVersion = reader.ReadLine(); //1 строка
                        launcherSVersion = reader.ReadLine(); //2 строка
                        sdkSVersion = reader.ReadLine(); //3 строка
                        modSVersion = reader.ReadLine(); //4 строка
                        modpackSVersion = reader.ReadLine(); //5 строка
 
                        if (verChecker.NewVersionExists(options.load("updater_version"), updaterSVersion))
                        {
                           // updatable_items.Add(new_updater);
                           // update = true;
                           print_txt("Загрузка новой версии апдэйтера лаунчера", "Downloading a new version of launcher updater"); 
                           Uri url = new Uri("http://superpower2.ru/realism2016/updater.exe");
                           WebClient dwnld_updater = new WebClient();
                           dwnld_updater.DownloadFile(url, "updater.exe");
                           options.save("updater_version", updaterSVersion);
                        }
                        if (verChecker.NewVersionExists(options.load("launcher_version"), launcherSVersion))
                        {
                            downloader dwnld_launcher = new downloader();
                            what_to.dwnld = new_launcher;
                            what_to.new_version = launcherSVersion;
 
                            if (loader.ActiveForm.InvokeRequired)
                            {
                                loader.ActiveForm.Invoke(new MethodInvoker(delegate
                                {
                                    dwnld_launcher.ShowDialog();
                                }));
                            }
                            else
                            dwnld_launcher.ShowDialog();
                            
                            proc.StartInfo.FileName = Path.Combine(Paths.ExeDirectory(), "updater.exe");
                            proc.StartInfo.Arguments = launcherSVersion;
                            proc.Start();
                            Process.GetCurrentProcess();
                            loader.ActiveForm.Invoke(new MethodInvoker(delegate
                            {
                                Dispose();
                            }));
 
                        }
                        if (verChecker.NewVersionExists(options.load("sdk_version"), sdkSVersion))
                        {
 
                            downloader dwnld_sdk = new downloader();
                            what_to.dwnld = new_sdk;
                            what_to.new_version = sdkSVersion;
                            if (loader.ActiveForm.InvokeRequired)
                            {
                                loader.ActiveForm.Invoke(new MethodInvoker(delegate
                                {
                                    dwnld_sdk.ShowDialog();
                                }));
                            }
                            else
                            dwnld_sdk.ShowDialog();
                           
                            //updatable_items.Add(new_sdk);
                            //update = true;
                        }
                        if (verChecker.NewVersionExists(options.load("mod_version"), modSVersion))
                        {
                            downloader dwnld_mod = new downloader();
                            what_to.dwnld = new_mod;
                            what_to.new_version = modSVersion;
                            if (loader.ActiveForm.InvokeRequired)
                            {
                                loader.ActiveForm.Invoke(new MethodInvoker(delegate
                                {
                                    dwnld_mod.ShowDialog();
                                }));
                            }
                            else
                            dwnld_mod.ShowDialog();
 
                            //updatable_items.Add(new_mod);
                            //update = true;
                        }
                        if (verChecker.NewVersionExists(options.load("mod_pack_version"), modpackSVersion))
                        {
                            mod_packSVersion.data = modpackSVersion;
                            if (options.load("mod_pack_installation_status") == "1")
                            {
                                downloader dwnld_mod_pack = new downloader();
                                what_to.dwnld = new_mod_pack;
                                what_to.new_version = modpackSVersion;
                                if (loader.ActiveForm.InvokeRequired)
                                {
                                    loader.ActiveForm.Invoke(new MethodInvoker(delegate
                                    {
                                        dwnld_mod_pack.ShowDialog();
                                    }));
                                }
                                else
                                dwnld_mod_pack.ShowDialog();
                            }
                        }
                    }
               // }
               // catch (Exception ex){ print_mbox("Проверка на доступность обновлений завершилась неудачей " + ex.Message, "Update failed " + ex.Message); }
            }
        }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.02.2016, 17:03
Ответы с готовыми решениями:

Как присвоить переменную одного диалогового окна к переменной другого диалогового окна? (ООП)
Вот у меня есть результат вычисления и я его присваиваю переменной в первом диалоговом окне, но я...

Как поймать исключение связанное с неправильным итератором?
Доброго времени суток. Не могу поймать исключение, при запуск программы выдает ошибку vector...

Ошибка возникает в функции _lseek, исключение связанное с хэндлом
if ((file_handle = OpenFile(filename, &file_data, OF_READ)) == -1) return(0); /// ...

Удержание окна с текущими введенными значениями после диалогового окна (с предупреждением)
Здравствуйте, есть маленькая задачка. Форма добавления ТС, открывается с основной формы. Нужно...

7
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
10.02.2016, 13:48 2
Цитата Сообщение от aurisdies Посмотреть сообщение
//жалуется на эту строку
Очевидно, что в момент вызова loader = null. Бегло глянул код и нигде не увидел объявления и инициализации этого loader'а
0
33 / 33 / 18
Регистрация: 16.09.2015
Сообщений: 246
10.02.2016, 20:45  [ТС] 3
Цитата Сообщение от nio Посмотреть сообщение
Очевидно, что в момент вызова loader = null. Бегло глянул код и нигде не увидел объявления и инициализации этого loader'а
loader это форма вызывающаяся в Program.cs первой

Добавлено через 20 минут
Вобщемто после того как я вынес функцию Check_Update() из бэкграундворкера, ошибка пропала, но в идеале она мне нужна в нем. Видимо loader.ActiveForm.InvokeRequired неправильная формулеровка (loader - главная форма в которой запускается бэкраунд воркер из которого вызвается функция CheckUpdate в которой я хочу запустить диалоговое окно). Подскажите как правильно насписать ссылку на объект в данном случае, чтобы диалоговое окно запускалось без исключения.
0
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
12.02.2016, 09:44 4
задание в "бэкграундворкер" выполняется в фоновом потоке, поэтому напрямую обращаться к элементам GUI из него нельзя
0
33 / 33 / 18
Регистрация: 16.09.2015
Сообщений: 246
12.02.2016, 11:26  [ТС] 5
Цитата Сообщение от nio Посмотреть сообщение
задание в "бэкграундворкер" выполняется в фоновом потоке, поэтому напрямую обращаться к элементам GUI из него нельзя
ну к лэйблу или прогресс бару через инвок обращаться можно, значит можно и диалоговое окно вызвать, почему нет?
0
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
12.02.2016, 11:37 6
Цитата Сообщение от aurisdies Посмотреть сообщение
почему нет?
Цитата Сообщение от aurisdies Посмотреть сообщение
через инвок обращаться можно
тогда
Цитата Сообщение от aurisdies Посмотреть сообщение
как правильно насписать ссылку на объект в данном случае
в фоновый поток ссылку можно передать через параметр
0
33 / 33 / 18
Регистрация: 16.09.2015
Сообщений: 246
12.02.2016, 12:48  [ТС] 7
Цитата Сообщение от nio Посмотреть сообщение
в фоновый поток ссылку можно передать через параметр
это как?
0
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
12.02.2016, 12:54 8
Цитата Сообщение от aurisdies Посмотреть сообщение
это как?
https://msdn.microsoft.com/ru-... .110).aspx
1
12.02.2016, 12:54
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.02.2016, 12:54
Помогаю со студенческими работами здесь

Создание модального диалогового окна поверх окна родителя
Не могу не где найти пример как это сделать. Нужно создать модальное окно поверх окна родителя...

Создание окна из диалогового окна
Есть необходимость создавать новое окно прямо из диалогового по происхождению некоторого события,...

Как проверить поле на заполненность перед вызовом модального окна?
Здравствуйте. Подскажите, как сделать, чтобы при незаполненном поле модальное окно не открывалось,...

Создание диалогового окна
Здравствуйте. Мне необходимо создать диалоговое окно. В программе есть один пункт меню "о...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Как программировать под HCL Notes и создавать свои продукты на ее основе
InfoMaster 11.01.2025
HCL Notes (ранее известный как IBM Notes и Lotus Notes) представляет собой мощную платформу для разработки корпоративных приложений, которая сочетает в себе функции электронной почты, календаря,. . .
Как работать с SVN (Subversion)
InfoMaster 11.01.2025
Введение Система контроля версий является неотъемлемой частью современного процесса разработки программного обеспечения. Она обеспечивает управление изменениями в коде, позволяет отслеживать. . .
Использование GraphQL в JavaScript
InfoMaster 11.01.2025
Введение в GraphQL и его преимущества В современной разработке веб-приложений эффективный обмен данными между клиентом и сервером играет ключевую роль. GraphQL представляет собой язык запросов и. . .
Администрирован­­­­ие Git, продвинутые техники работы с Git
InfoMaster 11.01.2025
Основы управления репозиторием Эффективное управление Git-репозиторием требует глубокого понимания механизмов контроля доступа и инструментов администрирования. Рассмотрим ключевые аспекты. . .
Что такое HCL Notes и как с ним работать
InfoMaster 10.01.2025
HCL Notes (ранее известный как IBM Notes и Lotus Notes) представляет собой комплексную платформу для совместной работы и обмена информацией в корпоративной среде. Это многофункциональное решение,. . .
Как работать с Git из Windows и Visual Studio
InfoMaster 10.01.2025
Работа с Git в Windows Работа с Git в операционной системе Windows может быть осуществлена с помощью различных инструментов, каждый из которых обладает своими уникальными возможностями и. . .
Аналог оператора switch case в Python
InfoMaster 10.01.2025
Оператор switch case используется в программировании для выбора одного из нескольких вариантов исполнения кода. Однако в языке Python этот оператор отсутствует. Понимание аналогов switch case в. . .
Отличия абстрактного класса от интерфейса
InfoMaster 10.01.2025
В современной разработке программного обеспечения существуют два основных механизма реализации абстракции: абстрактные классы и интерфейсы. Эти инструменты, хотя и схожи в своей основной цели -. . .
Как работать в Git
InfoMaster 10.01.2025
Git — это одна из наиболее популярных систем контроля версий, которая активно используется разработчиками по всему миру. Она позволяет эффективно управлять изменениями в коде, координировать работу. . .
Реализация передвижения персонажа в Unity3d на C#
InfoMaster 10.01.2025
Реализация передвижения персонажа в Unity3D начинается с правильной настройки проекта. Этот этап критически важен для создания отзывчивого и плавного управления. Рассмотрим основные шаги для создания. . .
Docker: руководство для начинающих
InfoMaster 10.01.2025
В современном мире разработки программного обеспечения контейнеризация стала неотъемлемой частью процесса создания и развертывания приложений. Docker, как ведущая платформа контейнеризации, произвела. . .
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru