C# 单件消息框

C# 单件消息框,c#,singleton,C#,Singleton,我正在编写一个应用程序,当连接出现问题时,我想弹出一个消息框,向用户显示错误 为此,当程序抛出异常时,它将进入catch块,我想向用户显示以下消息:代码: catch (WebException ex) { if (!(ex.Message == "The operation has timed out.")) { MessageBox.Show(ex.Message);

我正在编写一个应用程序,当连接出现问题时,我想弹出一个消息框,向用户显示错误

为此,当程序抛出异常时,它将进入catch块,我想向用户显示以下消息:代码:

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

        }

由于程序似乎会一直捕捉到这种情况,直到连接被修复为止,所以我应该如何一次只在一个messagebox上更新我的消息?

当messagebox显示时,没有太多控制权。我将使用另一个以模态模式显示的
表单
。在显示之前,您可以启动一个单独的线程,并将逻辑用于监视连接。重新建立后,通知消息表单并将其关闭。

您可以使用以下方法:

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.
}

您可以使用在显示messagebox之前选中并设置的静态标志,然后重置。建议:不要检查异常消息是否超时,请检查异常类型!!