1

C# デスクトップ アプリケーションで例外を削除またはブロックしたいと考えています。この問題は、プロジェクトがスプラッシュ スクリーンをロードするときに発生します。

スプラッシュ スクリーン呼び出しのコードは次のとおりです。

private void SplashForm()
        {
            Splash newSplashForm = new Splash();
            newSplashForm.ShowDialog();
            newSplashForm.Dispose();
        }

 public MainForm(string filearg) {
             Thread t1 = new Thread(new ThreadStart(SplashForm));
             t1.Start();
             Thread.Sleep(TimeSpan.FromSeconds(5)); // The amount of time we want our splash form visible
             t1.Abort();
             Thread.Sleep(7000);
}

この例外を削除する方法

4

2 に答える 2

2

この例外を削除する方法

   t1.Abort();

その例外を作成するものを呼び出さないでください。より適切なスレッド間通信イベントを使用して、ワーカー スレッドを協調的に終了します。

この場合Control.BeginInvokeSplashインスタンスを呼び出してそのCloseメソッドを呼び出します。

于 2012-06-25T10:45:36.733 に答える
0
    private void SplashForm()
    {
        try
        {
            Splash newSplashForm = new Splash();
            newSplashForm.ShowDialog();
            newSplashForm.Dispose();
        }
        catch (System.Threading.ThreadAbortException)
       {
            System.Threading.Thread.ResetAbort();
       }
    }

スレッドで例外を無視したい場合は、空のcatchブロックを使用してください

    private void SplashForm()
    {
        try
        {
            Splash newSplashForm = new Splash();
            newSplashForm.ShowDialog();
            newSplashForm.Dispose();
        }
        catch { }
    }
于 2012-06-25T10:45:02.240 に答える