2012-06-25 5 views
1

C# 데스크톱 응용 프로그램에서 예외를 제거하거나 차단하려고합니다. 이 문제는C# 데스크톱 응용 프로그램에서 Thread Abortion Error 예외를 제거하는 방법

시작 화면 호출하는 코드는 내가이 예외를 제거하는 방법

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); 
} 

입니다 .. 내 프로젝트가 시작 화면을로드 할 때 발생되는

+1

그건 잘못되었습니다. 닫기를 호출하려면 splashform에 타이머를 넣으십시오. 정적 메서드를 작성하여 타이머를 킥 받아 양식을 작성하십시오. –

+1

t1.Abort();를 제거한 예외를 제거 할 수 있습니다. – Alex

답변

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 { } 
    } 
+0

이 대답은 작동하지 않습니다 ..... – Mujtaba

2

내가이 예외를 제거하는 방법

t1.Abort(); 

는 예외를 만들 무언가를 호출하지 마십시오. 더 나은 스레드 간 통신 이벤트를 사용하여 작업자 스레드를 공동으로 닫습니다.

이 경우 Close 메서드를 호출하려면 Splash 인스턴스에서 을 호출하십시오.

관련 문제