Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/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# 在代码c中插入延迟/等待#_C#_.net_Multithreading_Winforms - Fatal编程技术网

C# 在代码c中插入延迟/等待#

C# 在代码c中插入延迟/等待#,c#,.net,multithreading,winforms,C#,.net,Multithreading,Winforms,您好,我有这个代码,我需要在forms.Clear()之后添加延迟但我对编码还不熟悉,我搞不懂。 我尝试了任务.延迟和线程.睡眠但它锁定了我的用户界面。是否可以添加延迟以锁定应用程序?谢谢。您可以将该方法标记为async并使用以下方法: public void OpenUpForm(object sender, EventArgs e) { if (forms.Count == numberoftimes) { forms.

您好,我有这个代码,我需要在
forms.Clear()之后添加延迟但我对编码还不熟悉,我搞不懂。

我尝试了
任务.延迟
线程.睡眠
但它锁定了我的用户界面。是否可以添加延迟以锁定应用程序?谢谢。

您可以将该方法标记为async并使用以下方法:

    public void OpenUpForm(object sender, EventArgs e)
    {
        if (forms.Count == numberoftimes)
        {
            forms.ForEach(f =>
            {
                f.Close(); 
                f.Dispose(); 
            });
            forms.Clear(); 
            //Need Delay Here
            return;
        }
        forms.Add(new Form1());
        forms.Last().Show();
    }
不会阻止ui线程

await Task.Delay(2000);
这将表现为这样

  • 创建一个新任务,该任务在2秒后运行至完成
  • Ui线程被冒泡备份以继续执行/处理其他事件
  • 2秒结束后,UI线程返回并在等待之后继续执行异步方法

您可以将该方法标记为async并使用以下方法:

    public void OpenUpForm(object sender, EventArgs e)
    {
        if (forms.Count == numberoftimes)
        {
            forms.ForEach(f =>
            {
                f.Close(); 
                f.Dispose(); 
            });
            forms.Clear(); 
            //Need Delay Here
            return;
        }
        forms.Add(new Form1());
        forms.Last().Show();
    }
不会阻止ui线程

await Task.Delay(2000);
这将表现为这样

  • 创建一个新任务,该任务在2秒后运行至完成
  • Ui线程被冒泡备份以继续执行/处理其他事件
  • 2秒结束后,UI线程返回并在等待之后继续执行异步方法

您可以将该方法标记为async并使用以下方法:

    public void OpenUpForm(object sender, EventArgs e)
    {
        if (forms.Count == numberoftimes)
        {
            forms.ForEach(f =>
            {
                f.Close(); 
                f.Dispose(); 
            });
            forms.Clear(); 
            //Need Delay Here
            return;
        }
        forms.Add(new Form1());
        forms.Last().Show();
    }
不会阻止ui线程

await Task.Delay(2000);
这将表现为这样

  • 创建一个新任务,该任务在2秒后运行至完成
  • Ui线程被冒泡备份以继续执行/处理其他事件
  • 2秒结束后,UI线程返回并在等待之后继续执行异步方法

您可以将该方法标记为async并使用以下方法:

    public void OpenUpForm(object sender, EventArgs e)
    {
        if (forms.Count == numberoftimes)
        {
            forms.ForEach(f =>
            {
                f.Close(); 
                f.Dispose(); 
            });
            forms.Clear(); 
            //Need Delay Here
            return;
        }
        forms.Add(new Form1());
        forms.Last().Show();
    }
不会阻止ui线程

await Task.Delay(2000);
这将表现为这样

  • 创建一个新任务,该任务在2秒后运行至完成
  • Ui线程被冒泡备份以继续执行/处理其他事件
  • 2秒结束后,UI线程返回并在等待之后继续执行异步方法

我不明白您需要延期。这似乎是可怕的代码。如果你在比你慢的计算机上运行它,它会崩溃吗?蓝屏?如果更快呢?我正在添加一个数字上下,希望将代码延迟到选定的时间。在速度较慢的计算机上运行正常,但我愿意接受建议。我不理解您需要延迟。这似乎是可怕的代码。如果你在比你慢的计算机上运行它,它会崩溃吗?蓝屏?如果更快呢?我正在添加一个数字上下,希望将代码延迟到选定的时间。在速度较慢的计算机上运行正常,但我愿意接受建议。我不理解您需要延迟。这似乎是可怕的代码。如果你在比你慢的计算机上运行它,它会崩溃吗?蓝屏?如果更快呢?我正在添加一个数字上下,希望将代码延迟到选定的时间。在速度较慢的计算机上运行正常,但我愿意接受建议。我不理解您需要延迟。这似乎是可怕的代码。如果你在比你慢的计算机上运行它,它会崩溃吗?蓝屏?如果更快呢?我正在添加一个数字上下,希望将代码延迟到选定的时间。在较慢的计算机上运行正常,但我愿意接受建议。调试它时,我可以看到延迟计时器已设置,但运行它时,它会像没有延迟一样运行(我的延迟为7000)。这是因为操作
Task.delay(7000)
从未使调用线程过时。它启动一个新线程运行,然后返回到您调用它的位置。然后继续执行。wait关键字确保任务后的代码。延迟直到7秒结束才会执行。调试它时,我可以看到延迟计时器已设置,但当我运行它时,它会像没有延迟一样运行(我的延迟为7000)。这是因为操作
Task.Delay(7000)
从未使调用线程过时。它启动一个新线程运行,然后返回到您调用它的位置。然后继续执行。wait关键字确保任务后的代码。延迟直到7秒结束才会执行。调试它时,我可以看到延迟计时器已设置,但当我运行它时,它会像没有延迟一样运行(我的延迟为7000)。这是因为操作
Task.Delay(7000)
从未使调用线程过时。它启动一个新线程运行,然后返回到您调用它的位置。然后继续执行。wait关键字确保任务后的代码。延迟直到7秒结束才会执行。调试它时,我可以看到延迟计时器已设置,但当我运行它时,它会像没有延迟一样运行(我的延迟为7000)。这是因为操作
Task.Delay(7000)
从未使调用线程过时。它启动一个新线程运行,然后返回到您调用它的位置。然后继续执行。wait关键字确保在任务完成后执行代码。延迟直到7秒结束才会执行。