Может ли кто-нибудь пролить свет на мою проблему?
Я работаю над проектом wpf. Сценарий приведен ниже:
Мне нужно открыть окно (окно модели) в основном потоке пользовательского интерфейса, а затем закрыть его. Эти работы начинаются из другого потока пользовательского интерфейса (чтобы удержать пользователя от нажатия на главное окно пользовательского интерфейса). Затем я закрываю это окно. Основной код показан ниже. И это работает.
Насколько я знаю, метод close не будет выполняться до того, как ShowDialog ()
вернется (по крайней мере, так обстоит дело с потоком пользовательского интерфейса, я имею в виду код без диспетчера), кто-нибудь есть опыт работы с многопоточностью?
Window window;
private void Button_Click(object sender, RoutedEventArgs e)
{
Thread thread = new Thread(() =>
{
//create a window and let user work from this thread
//code is omitted.
//create another window on main UI thread
Application.Current.Dispatcher.BeginInvoke(new Action(() =>
{
window = new Window();
window.ShowDialog();
}));
//do some work here
Thread.Sleep(1000);
Application.Current.Dispatcher.BeginInvoke(new Action(() =>
{
//Thread.Sleep(1000);
window.Close();
}));
});
thread.Start();
}
Спасибо за ваше время!