Я должен создать Форму в другом потоке и сохранить это ranning пока пользователь performe некоторое действие в основном потоке (нажимают кнопку).
Не очень трудно сделать использование
System.Windows.Forms.Application.Run(new ApplicationContext());
это запускает цикл сообщения приложения в текущем потоке. Но это решение требует использования Системы. Windows. Пространство имен форм, который в не wpf пространство имен.
Вы знаете wpf-способ достигнуть этой цели?=)
P.S. не запуская сообщение приложения циклично выполняются, поток будет imidiatly, завершенным после обработки последнего выражения в нем. Так, Форма появится только на мгновение и будет закрыта. = (
И есть также Dispatcher .PushFrame
Это удобно, потому что позволяет вам запускать цикл сообщений до тех пор, пока вы не определите критерий остановки, например, пока на экране отображается диалог выполнения.
Справка?
Application.DoEvents in WPF Revisited
Code extract from the blog:
using System;
using System.Threading;
using System.Windows;
using System.Windows.Threading;
namespace Sheva.Windows
{
/// <summary>
/// Designates a Windows Presentation Foundation application with added functionalities.
/// </summary>
public class WpfApplication : Application
{
/// <summary>
/// Processes all messages currently in the message queue.
/// </summary>
/// <remarks>
/// This method can potentially cause code re-entrancy problem, so use it with great care.
/// </remarks>
public static void DoEvents()
{
Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new ThreadStart(delegate { }));
}
}
}