Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.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#_Delay - Fatal编程技术网

C# 延迟几秒钟

C# 延迟几秒钟,c#,delay,C#,Delay,我一直在想怎么延期。我尝试了thread.sleep,但它停止了项目。我想做一些类似的事情: Form4 ss = new Form4(); ss.Show(); wait(4000) //4000 miliseconds ss.close(); 我试着等待任务。延迟(4000)但它说: 我的退货类型不对 请帮助使用计时器 创建一个间隔为4000的计时器,并设置其滴答事件以关闭窗体。将等待(4000)替换为计时器启动事件。请确保在关闭表单后停止计时器。您可以使用Task.Delay(): 像这

我一直在想怎么延期。我尝试了thread.sleep,但它停止了项目。我想做一些类似的事情:

Form4 ss = new Form4();
ss.Show();
wait(4000) //4000 miliseconds
ss.close();
我试着等待任务。延迟(4000)但它说: 我的退货类型不对 请帮助使用计时器


创建一个间隔为4000的计时器,并设置其滴答事件以关闭窗体。将
等待(4000)
替换为计时器启动事件。请确保在关闭表单后停止计时器。

您可以使用
Task.Delay()


像这样装饰你的方法

public async Task MyWaitMethod() 
{
    await Task.Run(async () => //Task.Run automatically unwraps nested Task types!
    {
        Console.WriteLine("Start");
        await Task.Delay(5000);
        Console.WriteLine("Done");
    });
    Console.WriteLine("All done");
}
public async Task MyWaitMethod() 
{
    await Task.Delay(5000);
}
如果您不理解第一个示例,请使用这样一个简单的直接示例

public async Task MyWaitMethod() 
{
    await Task.Run(async () => //Task.Run automatically unwraps nested Task types!
    {
        Console.WriteLine("Start");
        await Task.Delay(5000);
        Console.WriteLine("Done");
    });
    Console.WriteLine("All done");
}
public async Task MyWaitMethod() 
{
    await Task.Delay(5000);
}

Thread.Sleep(4000)我假设您使用的是WinForms。睡眠将停止你的UI线程。使用
等待任务。延迟(4000)相反。是winforms还是什么?让我假设是的!Sleep(4000)阻止当前线程上的消息,因此您的窗口没有时间显示自己。而是这样做:Task.Delay(4000).ContinueWith(t=>form.Close(),TaskScheduler.FromCurrentSynchronizationContext());你在任何地方都找不到任何显示如何延迟的片段??你的标题在谷歌上的第一次点击:当你可以使用
Thread.Sleep()
时,这是非常不必要的,我也会这样做:timer.interval=1000 timer.Start();timer.Stop();MessageBox.Show(“那是一个1秒的延迟”)@MethodMan OP说他们尝试了
Tread.Sleep
,但它“停止了项目”(大概是winforms)。@AAAA尝试的时间和评论的时间相同,然后你会知道,还有一个更好的问题…是的,当我尝试等待任务时,仍然不需要创建计时器。延迟(4000)它给了我这个问题:“等待”运算符只能在异步方法中使用。考虑用“AsiNC”修饰符标记这个方法,并将它的返回类型改为“任务”。错误告诉你这个问题意味着什么。用
async
开始使用Google pleaseSorry lol装饰你的方法,我这样做了,它给了我这个错误:谢谢,但它说它有错误的返回类型。这里有一张图片:@AA如果返回类型很重要,你应该在你的问题中包含它。而且,这是一个问题