Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.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#表单显示定时_C#_Forms_Timing_Display - Fatal编程技术网

c#表单显示定时

c#表单显示定时,c#,forms,timing,display,C#,Forms,Timing,Display,我有一个表格程序,可以显示两个表格。从本质上讲,form1隐藏form2,通过创建棋盘来重建其内容,然后显示form2。如果我一步一步地通过它,一切都会显示良好。我想运行几个隐藏重建显示序列,在form2的每个显示之间有一个短暂的暂停,以便验证它是否按预期工作。如果我在每次演出后放一个msgbox,我会看到正确绘制了form2。如果我在表演结束后暂停2秒(循环2秒不做任何事情),我会看到表格的轮廓,但棋盘应该放在一个空白处。我认为这是一个时间问题,但不知道如何解决。做短暂停顿的正确方法是什么

我有一个表格程序,可以显示两个表格。从本质上讲,form1隐藏form2,通过创建棋盘来重建其内容,然后显示form2。如果我一步一步地通过它,一切都会显示良好。我想运行几个隐藏重建显示序列,在form2的每个显示之间有一个短暂的暂停,以便验证它是否按预期工作。如果我在每次演出后放一个msgbox,我会看到正确绘制了form2。如果我在表演结束后暂停2秒(循环2秒不做任何事情),我会看到表格的轮廓,但棋盘应该放在一个空白处。我认为这是一个时间问题,但不知道如何解决。做短暂停顿的正确方法是什么

    private void Do1Bot()
    {  
        SetStart();
        for (int i = 1; i <= numsess; i++)
        {
            NextSess();
            Do1Sess();
            //MessageBox.Show("After do1 sess");  // Checkerboard appears in the middle of the form this way.
            //Wait(2);  // This way I get the form borders but a blank space in place of a checkerboard.
        }
    }

    private void Wait(int secs)
    {
        DateTime Tend = DateTime.Now.AddSeconds(secs);
        do { }             
        while (DateTime.Now < Tend);

    }
private void Do1Bot()
{  
SetStart();

for(int i=1;i将Application.DoEvents()添加到等待循环(多亏了Sam Axe)解决了这个问题。

您的
wait
方法会阻止UI线程,因此在UI线程被阻止期间,您总是会看到它“挂起”添加
Application.DoEvents()
等待循环将导致消息泵循环,从而允许显示Form2。Application.DoEvents()解决了这个问题,但我不明白为什么。因为我最初尝试的两个方法都应该在Do1ss()显示表单后调用。永远不要在循环中忙着等待。这完全是浪费CPU周期,而且会耗尽电池电量。如果你想有一个延迟,那么就使用计时器。顺便说一句,既然计时器已经在工具箱中了,你就没有理由不使用它。我想要的是理解。如果窗体2显示在do1ss中,为什么不呢无论我使用何种延迟都可见?当然,我知道do nothing循环不是生产代码,它是一种快速而肮脏的方式,试图在更新后查看表单。它显示了表单的大纲,但没有显示内容。你是说form.show事件没有在下一条指令之前完成吗?我阅读了关于DoEv的内容我和ents都知道这对同时发生的事件有什么帮助,但我认为这些事件是连续的。请让我澄清我的无知。