Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.10.2018, 22:43   #1
ольгаг
Форумчанин
 
Регистрация: 22.02.2010
Сообщений: 325
По умолчанию Использование 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, 21:20   #2
Nintra GrayWorker
Пользователь
 
Регистрация: 19.10.2018
Сообщений: 72
По умолчанию

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

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

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
BackgroundWorker и две формы - C# PANDA8 C# (си шарп) 12 13.04.2017 13: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