好的,我只是想创建一个基本的加载页面,所以我有一些性感页面出现(不做任何加载)只是在我的真实表单出现之前显示几秒钟
这是我的代码:
public partial class LoadingPage : Window
{
System.Threading.Thread iThread;
public LoadingPage()
{
InitializeComponent();
}
private void Refresh()
{
System.Threading.Thread.Sleep(900);
MainWindow iMain = new MainWindow();
iMain.ShowDialog();
this.Dispatcher.Invoke(new Action(Close));
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
iThread = new System.Threading.Thread(new ThreadStart(Refresh));
iThread.SetApartmentState(System.Threading.ApartmentState.STA);
iThread.Start();
}
private void Close()
{
this.Close();
}
这样可行,但会导致堆栈溢出,并且在主页面打开时不会关闭加载窗口。
此外,close方法有一个绿色下划线说“隐藏继承的成员System.Window.Windows.Close()使用new关键字,如果隐藏意图'
问题是:是什么导致堆栈溢出?
答案 0 :(得分:6)
在
private void Close()
{
this.Close();
}
你在无限递归中调用相同的Close
,它会溢出堆栈
我认为你的意思是
private void Close()
{
base.Close();
}
答案 1 :(得分:1)
this.Close()
无休止地递归。使用base.Close()
。