单身消息框

时间:2012-02-07 09:39:28

标签: c# singleton

我正在编写一个应用程序,当连接发生某些事情时,我想弹出一个消息框并向用户显示错误......

为此目的,当程序抛出异常时,它将进入catch块,并且我想向用户显示此处的消息是代码:

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

        }

因为看起来程序会在这种情况下永远存在,直到连接被修复,所以我该怎样做才能一次只在一个消息框上更新我的消息?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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.
}