2012-02-07 32 views
1

我写在这时候发生了一件事情,以我想弹出一个消息框,并显示用户错误的连接的应用程序...单的MessageBox

为此,当程序抛出一个异常,它会来到catch块,并在这我想告诉用户这里的消息是代码:

 catch (WebException ex) 
     { 
      if (!(ex.Message == "The operation has timed out.")) 
      { 
        MessageBox.Show(ex.Message); 
      } 

     } 

,因为它似乎程序会来此捕捞像永远,直到连接,成为固定的所以我应该怎么一次只在一个消息框上更新我的消息?

+0

您可以使用您检查并显示在MessageBox之前设置,然后再切一个静态的标志。建议:不要检查超时异常消息,检查异常类型! – 2012-02-07 09:43:40

回答

0

显示时对MessageBox没有太多的控制权。我会用另一个Form以模式模式显示。在显示之前,您可以启动一个单独的线程并将逻辑监视连接。重新建立时,通知消息窗体并关闭它。

0

您可以使用类似:

public static class FailureMessagebox 
{ 
    private static bool _hasBeenSuccessful = true; 

    public static void ShowIfFailure(Action someAction) 
    { 
     try 
     { 
      someAction(); 
      _hasBeenSuccessful = false; 
     } 
     catch (Exception err) 
     { 
      if (_hasBeenSuccessful) 
       MessageBox.Show(ex.Message); 

      _hasBeenSuccessful = false; 
        throw; 
     } 
    } 
} 

使用范例:

try 
{ 
    WebResponse response; 
    FailureMessagebox.ShowIfFailure(() => response = webRequest.GetResponse()); 
} 
catch (WebException err) 
{ 
    //handle the exception here. 
}