Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#在catch语句中暂停不起作用_C# - Fatal编程技术网

c#在catch语句中暂停不起作用

c#在catch语句中暂停不起作用,c#,C#,我有一个try/catch块,在catch中我试图应用暂停,但无论我尝试什么方法(暂停、线程睡眠),它都会继续。并忽略主块中的所有暂停。这是一个.NET错误吗 catch (Exception ex) { if (maxDelay < 1) maxDelay = 1; newpause(maxDelay); // Pause(maxDelay * 60); Current = "Error:" + txt; LogUpdater.Update

我有一个
try/catch
块,在catch中我试图应用暂停,但无论我尝试什么方法(暂停、线程睡眠),它都会继续。并忽略主块中的所有暂停。这是一个.NET错误吗

catch (Exception ex)
{
    if (maxDelay < 1)
    maxDelay = 1;
    newpause(maxDelay);
    // Pause(maxDelay * 60);
    Current = "Error:" + txt;
    LogUpdater.UpdateLog(f, "Error sending : " + txt + ".");
    System.Threading.Thread.Sleep(10);
    bw.ReportProgress(1);

 }

 public void newpause(int maxDelay)
    {
        for (int i = 0; i < 60; i++)
        {
            System.Threading.Thread.Sleep(maxDelay*1000);
            Application.DoEvents();
        }
    }
catch(异常示例)
{
如果(最大延迟<1)
maxDelay=1;
newpause(maxDelay);
//暂停(最大延迟*60);
Current=“Error:”+txt;
UpdateLog(f,“发送错误:“+txt+”);
系统线程线程睡眠(10);
bw.报告进展情况(1);
}
public void newpause(int maxDelay)
{
对于(int i=0;i<60;i++)
{
系统线程线程睡眠(最大延迟*1000);
Application.DoEvents();
}
}

你过去的十分之一秒

你只要过10毫秒,1000就等于1秒

System.Threading.Thread.Sleep(1000); // One Second.

请尝试运行以下代码。这对我来说很有效

 class PauseExample
    {
        static void Main(string[] args)
        {
            int a = 90;
            int b = 0;

            try
            {
                int c = a / b;
            }
            catch
            {
                Console.WriteLine("In catch");

                System.Threading.Thread.Sleep(5000); //waits for 5 seconds

                Console.WriteLine("Out of catch");
            }
        }
    }

让我知道这是否有帮助

调用
DoEvents
是有问题的,因为这会导致处理其他事件,甚至可能使方法重新进入。现在还不清楚您想做什么,但坦率地说,我想说:不要调用
DoEvents
。这是一种黑客行为,也是造成问题的常见原因。特别是,
Timer
实例可能是
DoEvents
的大量问题(但还有许多其他问题)。除非我猜错了,否则这是一种限制每秒记录的错误数的尝试,这样你就不会每秒收到1000个相同错误条件的日志条目。而
DoEvents()
则试图使应用程序响应。但是不幸的是,你不是这样做的,从长远来看也不是这样(Marc是对的-这只会产生问题,很可能是“没有睡眠”的原因。如果你告诉我们你的整个问题,我们将能够告诉你正确的处理方法。代码还调用
newpause
,至少
1
;然后循环60次
睡眠(maxDelay*1000)
,因此:至少一分钟是正确的,但在运行时,一旦点击catch语句,它就不会暂停,而是continues@ChrisDolan-您如何知道它继续?您是对代码进行逐步评估,还是只检查日志?日志显示,它继续-它发送消息时,应该在em要么出错,要么无错误,它只是在出错后继续发送,没有暂停,没有错误时正常工作。这是最接近正常工作的,因此我们改编了本例中的内容。但是为什么暂停不工作?通过以下方法解决:System.Threading.Thread.Sleep(maxDelay*60*1000)@ChrisDolan-Chris,听着!我们一直在试图告诉你为什么它总是不起作用!因为
应用程序.DoEvents()
再次调用原始方法(使用try-catch)!如果你继续这样做,你很快就会遇到堆栈溢出。真的!