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秒结束才会执行。