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

时间:2015-11-01 16:40:17

标签: c# .net multithreading winforms

    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();
    }

您好我有这个代码,我需要在forms.Clear();之后添加延迟但是我不知道编码我想不出来。 我尝试过使用Task.DelayThread.Sleep,但它会锁定我的用户界面。是否可以添加延迟剂量锁定应用程序?谢谢。

1 个答案:

答案 0 :(得分:3)

您可以将方法标记为异步并使用此方法:

await Task.Delay(2000);

不会阻止ui线程

public async void OpenUpForm(object sender, EventArgs e)
{
    if (forms.Count == numberoftimes)
    {
        forms.ForEach(f =>
        {
            f.Close(); 
            f.Dispose(); 
        });
        forms.Clear(); 
        await Task.Delay(2000);
        return;
    }
    forms.Add(new Form1());
    forms.Last().Show();
}

这将表现得如此。

  • 创建一个在2秒后运行至完成的新任务
  • Ui Thread被冒泡以继续执行/处理其他事件
  • 2秒后,UI线程返回并从await
  • 之后继续执行async方法