Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > Pop up Window


Автор: Skalik 6.7.2011, 20:05
Есть WPF проект. Нужно что б когда выполняеться какая то длительная операция закрывать главное окно программы другим полупрозрачным с надписью "Please wait"!
Пытаюсь вот так запустить нужное мне окно в новом потоке:
Код

public void ShowSystemOnProcess()
        {
            thread = new Thread(() =>
                        {
                            SystemOnProcess w = new SystemOnProcess();
                            w.ShowDialog();
                            System.Windows.Threading.Dispatcher.Run();
                            w.Closed += (sender, e) => w.Dispatcher.InvokeShutdown();

                        });
            thread.SetApartmentState(ApartmentState.STA);
            thread.IsBackground = true;
            thread.Start();
        }


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

 

Автор: Rohoss 7.7.2011, 22:52
Цитата(Skalik @  6.7.2011,  20:05 Найти цитируемый пост)
Пытаюсь вот так запустить нужное мне окно в новом потоке:

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

Автор: jonie 7.7.2011, 23:18
используйте готовый BusyIndicator из http://wpftoolkit.codeplex.com/

Автор: Skalik 8.7.2011, 11:33
Rohoss, так и сделал как ты сказал. Спасибо та ответы!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)