0

OK、基本的な読み込みページを作成しようとしているだけなので、セクシーなページが表示されます(読み込みは行われません)。実際のフォームが表示される前に、数秒間表示されます。

これは私のコードです:

  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()を非表示にする場合は、非表示にする場合は新しいキーワードを使用する」という緑色の下線があります。

問題は、スタックオーバーフローの原因は何ですか?

4

2 に答える 2

6

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

無限再帰で同じものを呼び出しているためClose、スタックがオーバーフローします

私はあなたが意味したと思います

private void Close()
{
   base.Close();
}
于 2012-06-11T12:43:22.467 に答える
1

this.Close()無限に再帰しています。を使用しbase.Close()ます。

于 2012-06-11T12:43:56.113 に答える