我有一个类(CoreClient.cs)管理所有程序,我的程序有很多wpf窗口不能同时打开。 当CoreClient尝试打开第一个窗口(Config.xaml)询问配置数据时,一切都很好!! 当CoreClient尝试打开第二个窗口时,我收到错误。 (Login.xaml)这应该是登录窗口,我已尝试过其他窗口,我总是收到相同的错误。给人的印象是,出于某种原因,我无法打开任何窗口。
有什么想法吗?
CoreClient.cs
using System.Threading;
using System.Windows;
using MioEngine;
namespace Client
{
private EventWaitHandle _wait= new EventWaitHandle(false, EventResetMode.AutoReset);
public class CoreClient
{
//[...]
var _config = new Configuration(_wait);
Application.Current.Run(_config);
_wait.WaitOne();
//some data from _config is taken when _config close...
var _login = new Login(_mySocket, _wait);
Application.Current.Run(_login);
_wait.WaitOne();
//[...]
}
}
Config.xaml
using System;
using System.Net.Sockets;
using System.Threading;
using System.Windows;
namespace Client
{
public partial class Configuration: Window
{
private EventWaitHandle _wait;
public Configuration(EventWaitHandle wait)
{
InitializeComponent();
_wait = wait;
//
}
private void bExit_Click(object sender, EventArgs e)
{
//takes parameters from many textbox
wait.Set();
this.Close();
}
}
}
Login.xaml
using System;
using System.Net.Sockets;
using System.Threading;
using System.Windows;
using MyEngine;
using MyPack;
namespace Client
{
public partial class Login: Window
{
public Login(MySocket socket, EventWaitHandle wait)
{
InitializeComponent(); //<------ InvalidOperationException
_wait = wait;
//some code...
}
private void bExit_Click(object sender, EventArgs e)
{
//Control and setup the network and makes the LOGIN
wait.Set();
this.Close();
}
}
}
继续尝试我发现如果我从WPF窗口运行所有这一切,那就没问题了(但我必须为我创建一个不可用的父窗口)。
还试过Show和ShowDialog有一些问题: 使用Show我没有例外,但我的第二个窗口没有显示(使用EventWaitHandle) Tith ShowDialog我的CoreClient在第二个窗口启动后保持循环或等待某事
答案 0 :(得分:0)
这就是我这样做的方式 但是我必须为任何辅助窗口使用UserControl或Page(而不是Window) 但它们的外观和行为就像一个窗口
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
NavigationWindow navWin = new NavigationWindow();
navWin.Content = new UserControl1();
navWin.ShowsNavigationUI = false;
navWin.Show();
}
}