Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 08.10.2018, 23:43   #1
ольгаг
Форумчанин
 
Регистрация: 22.02.2010
Сообщений: 313
Репутация: 21
По умолчанию Использование BackgroundWorker для формы-заставки

Здравствуйте Уважаемые программисты!
Подскажите пожалуйста корректен ли код ниже (c# winforms vs2010 net4.0): форма1 - это форма-заставка с анимированным gif в picturebox, после запуска формы2-главной формы приложения, форма1 должна закрыться. Для отображения анимированного gif использую BackgroundWorker. Подскажите пожалуйста, нужно ли закрывать форму1 из первого потока, и корректно ли будут работать контролы на форме2 во втором потоке?


Код:

static class Program
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }

----
public Form1()
        {
            InitializeComponent();

            BackgroundWorker bgw = new BackgroundWorker();
            bgw.DoWork += bgw_DoWork;
            bgw.RunWorkerAsync();
        }

        void bgw_DoWork(object sender, DoWorkEventArgs e)
        {
            Thread.Sleep(200);
            Form2 frm2 = new Form2();
            frm2.WindowState = FormWindowState.Minimized;
            Application.Run(frm2);
        }
-----
private void Form2_Shown(object sender, EventArgs e)
        {
            this.WindowState = FormWindowState.Normal;
        }

private void Form2_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (e.CloseReason == CloseReason.UserClosing)
            {
                if (MyMessageBox.ShowMessage("Вы хотите завершить работу с программой?", " Внимание:", MessageBoxButtons.YesNo, 
                                             MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    this.Close();
                    Application.Exit();
                }
                else
                {
                    e.Cancel = true;
                }
            }
        }

ольгаг вне форума   Ответить с цитированием
Старый 19.10.2018, 22:20   #2
Nintra GrayWorker
Пользователь
 
Регистрация: 19.10.2018
Сообщений: 14
Репутация: 10
По умолчанию

>>Использование BackgroundWorker для формы-заставки
Для этого обычно используется контрол? SplashScreen.
(BackgroundWorker недолюбливаю, т.к. если их создавать "пачку" - это занимает времени в разы больше чем "пачку" Threads).
Протестировать ваш код пока не могу. По этому рабочий/нерабочий, годный/негодный сказать не могу.
Nintra GrayWorker вне форума   Ответить с цитированием
Старый 19.10.2018, 22:33   #3
Nintra GrayWorker
Пользователь
 
Регистрация: 19.10.2018
Сообщений: 14
Репутация: 10
По умолчанию

Цитата:
Сообщение от ольгаг Посмотреть сообщение
после запуска формы2-главной формы приложения
Главная форма приложения всегда должна быть под первым номером, а формы с логинами-паролями или с процессом загрузки должны быть второстепенными.
Если их нужно показать с фоном главной формы - там есть событие Shown.

Извините, я просто отдыхаю после тяжёлой трудовой недели, могу пока лишь теоретически подсказать - виртуалка специально для отдыха, без IDE.
Nintra GrayWorker вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
BackgroundWorker и две формы - C# PANDA8 C# (си шарп) 12 13.04.2017 14:30
Создание заставки для windows на Delphi/C++ Xazarychi Помощь студентам 2 21.02.2013 03:34
Повторное использование формы kogtishka Общие вопросы Delphi 1 16.04.2012 19:57
Использование формы из DLL-сборки AgentSmit C# (си шарп) 1 10.10.2011 11:28
использование компонента TreeWiev другой формы White Общие вопросы Delphi 2 29.08.2008 10:25


18:06.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru