正在加载页面 - >堆栈溢出

时间:2012-06-11 12:41:11

标签: c# loading stack-overflow

好的,我只是想创建一个基本的加载页面,所以我有一些性感页面出现(不做任何加载)只是在我的真实表单出现之前显示几秒钟

这是我的代码:

  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关键字,如果隐藏意图'

问题是:是什么导致堆栈溢出?

2 个答案:

答案 0 :(得分:6)

private void Close()
{
   this.Close();
}

你在无限递归中调用相同的Close,它会溢出堆栈

我认为你的意思是

private void Close()
{
   base.Close();
}

答案 1 :(得分:1)

this.Close()无休止地递归。使用base.Close()