Запуск окна WPF из проекта библиотеки классов

Я создаю своего рода «экран загрузки», который будет отображаться из библиотеки классов непосредственно перед тяжелой обработкой, а затем он скроется, когда обработка будет завершена. Моя проблема в том, что что бы я ни делал, тяжелая обработка, похоже, блокирует поток пользовательского интерфейса. Мне пришлось установить методы с атрибутом [STAThread] , чтобы окно действительно создавалось. Затем я показываю окно, используя:

bw = new BusyWindow();
bw.Show();

А затем просто скрываю его, используя bw. Hide () после завершения обработки. Я создал задачу для обработки, поэтому она должна выполняться в отдельном потоке ..? Если, конечно, STAThread полностью его не испортит?

Еще код:

var taskStart = Task.Factory.StartNew(() => ShowBusyWindow());
var taskProcess = taskStart.ContinueWith((antecedent) => GetInternal());
var taskEnd = taskProcess.ContinueWith((antecedent) => HideBusyWindow());

return taskProcess.Result;

И ShowBusywindow

public void ShowBusyWindow()
        {
            bw = new BusyWindow();
            bw.Show();
        }

И HideBusyWindow:

public void HideBusyWindow()
        {
            bw.Close();
        }

Я также должен упомянуть, что я пытаюсь открыть эту библиотеку для COM, поэтому он может быть запущен из некоторого кода VB6. Не знаю, влияет ли это на что-нибудь ...?

6
задан Harry 15 April 2011 в 15:26
поделиться