C# 线程的替代品。睡那个块
我正在寻找一种替代调用Thread.Sleep的方法,它不会阻止线程,而是将线程返回到线程池中。这样的东西存在吗?使用 使用C# 线程的替代品。睡那个块,c#,multithreading,threadpool,C#,Multithreading,Threadpool,我正在寻找一种替代调用Thread.Sleep的方法,它不会阻止线程,而是将线程返回到线程池中。这样的东西存在吗?使用 使用 如果线程返回到池中,那么它就不会在所讨论的方法中做更多的工作。将该方法的下一位设置为一个单独的方法,并创建一个调用它的计时器。如果线程返回池,那么它将不会在所讨论的方法中执行更多的工作。将该方法的下一位设为单独的方法,并创建一个调用该方法的计时器。您也可以使用计时器,例如: using System.Timers; private void Main() { T
如果线程返回到池中,那么它就不会在所讨论的方法中做更多的工作。将该方法的下一位设置为一个单独的方法,并创建一个调用它的计时器。如果线程返回池,那么它将不会在所讨论的方法中执行更多的工作。将该方法的下一位设为单独的方法,并创建一个调用该方法的计时器。您也可以使用计时器,例如:
using System.Timers;
private void Main()
{
Timer t = new Timer();
t.Interval = 5000; // 5 seconds
t.AutoReset = false;
t.Elapsed += new SleepDone(TimerElapsed);
t.Start();
}
private void SleepDone(object sender, ElapsedEventArgs e)
{
Console.WriteLine("HERE WHAT COME AFTER SLEEP");
}
您还可以使用计时器,例如:
using System.Timers;
private void Main()
{
Timer t = new Timer();
t.Interval = 5000; // 5 seconds
t.AutoReset = false;
t.Elapsed += new SleepDone(TimerElapsed);
t.Start();
}
private void SleepDone(object sender, ElapsedEventArgs e)
{
Console.WriteLine("HERE WHAT COME AFTER SLEEP");
}
或
任务。延迟
。看到斯里拉姆的答案后,我感觉自己就像一只老狗,忘记了新把戏。或者任务。延迟。在看到Sriram的答案后,我觉得自己像一只老狗,现在忘记了新的把戏。我把它放进去,并制作了一个方法,在这个方法中,这行代码看起来是异步的。我在调用方法中做了什么吗?什么都不做,这就是调用方法和“异步等待”的原因,如果需要调用方法也需要等待,那么在那里使用wait…@SachinKainth注意,任何非async
代码都将在主线程上继续运行;基本上,您需要将所有受影响的代码转换为async
/wait
,以便在不更改执行顺序的情况下执行。例如,如果您的代码调用SomeMethodAsync()
,但没有等待
结果,则该方法调用后的代码可能会执行,即使SomeMethodAsync()
刚刚启动,我将其放入并使该行显示为异步的方法。我在调用方法中做了什么吗?什么都不做,这就是调用方法和“异步等待”的原因,如果需要调用方法也需要等待,那么在那里使用wait…@SachinKainth注意,任何非async
代码都将在主线程上继续运行;基本上,您需要将所有受影响的代码转换为async
/wait
,以便在不更改执行顺序的情况下执行。例如,如果您的代码调用了SomeMethodAsync()
,但没有等待结果,那么即使SomeMethodAsync()
刚刚启动,该方法调用后的代码也可能会被执行为什么AutoReset=true
?感谢@SriramSakthivel+1提供的好提示。他需要运行一次延迟。为什么AutoReset=true
?感谢@SriramSakthivel+1提供的好提示。他需要运行一次延迟。