我正在使用C#,Net 4.5.2和WPF开发应用程序。它具有远程控制的GUI,因此传入的HTTP GET
请求(由Nancy处理)会触发Window
中的一些更改。由于服务器没有在GUI线程中运行,我使用Dispatcher.Invoke
来调用图形更改方法。在那里我得到了非常奇怪的行为:如果Show
未被Window
调用,则没有任何反应。但是调用Show
会创建2个窗口而不是1个窗口。我该如何解决?
public partial class App : Application //App.xaml.cs
{
public static MainWindow mainWindow;
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
mainWindow = new MainWindow();
//REMOVING NEXT LINE COMPLETELY BREAKS DISPATCHER.INVOKE IN mainWindow
mainWindow.Show();
}
}
public class MainModule : Nancy.NancyModule //Nancy server module
{
public MainModule()
{
Get["/stop"] = param => App.mainWindow.StopContent();
}
}
public partial class MainWindow : Window //WPF window
{
public MainWindow()
{
InitializeComponent();
}
public void StopContent()
{
//LINE BELOW WON'T WORK IF Show WASN'T CALLED
Dispatcher.Invoke(new Action(() => { Background = null; }));
}
}