我有一个用WPF创建的非常复杂的窗口。
由于加载需要很长时间(大约10秒),我想在启动应用程序后在后台创建窗口。
我的外壳包含一个按钮,当用户点击它时,将使用此窗口。想法是加载应用程序,此按钮被禁用。加载后,我的复合体将在后台创建。创建窗口后,我可以启用此按钮,用户可以使用它。
但非常重要的是,应用程序不会阻止,而窗口将在后台创建。用户应该能够在这段时间内使用其他模块。
有人知道达到目标的方法吗?
也许有人知道,如果有更多的可能性在下一个.NET-Framework 4.5中实现这一目标?
答案 0 :(得分:0)
请注意,您无法在BackgroundWorker
中创建实际窗口。需要在UI线程上创建窗口。但您可以在BackgroundWorker
中加载所有必要的数据,并在加载后使用表单中的数据。
答案 1 :(得分:0)
您可以在后台线程中创建窗口。你需要注意的事情是:
以下是在后台线程中创建窗口的示例:
Thread thread = new Thread(() =>
{
Window windowInAnotherThread = new Window();
windowInAnotherThread.Show();
System.Windows.Threading.Dispatcher.Run();
}) { IsBackground = true };
thread.SetApartmentState(ApartmentState.STA);
thread.Start();