C# 大量任务延迟会导致性能问题吗

C# 大量任务延迟会导致性能问题吗,c#,.net,C#,.net,大量的Task.Delay是否会导致性能问题,或者当我想使用它来延迟向rabbitmq传递消息时,是否有更好的方法来替换它 我最近和奥尔良联合写了一个事件巴士。当消费者的消费异常时,我希望它在5分钟内重试几次,以修复短期系统不可用导致的错误。我想使用等待任务。延迟实施,我不确定这是否会影响性能,或者是否有更好的方法来实施我的想法 谢谢。很多事情都会导致性能问题,但是等待的任务。延迟是更好的方法之一。它重量轻,不堵塞螺纹,适用于相当轻的管道。其执行情况如下: public static Task

大量的Task.Delay是否会导致性能问题,或者当我想使用它来延迟向rabbitmq传递消息时,是否有更好的方法来替换它

我最近和奥尔良联合写了一个事件巴士。当消费者的消费异常时,我希望它在5分钟内重试几次,以修复短期系统不可用导致的错误。我想使用等待任务。延迟实施,我不确定这是否会影响性能,或者是否有更好的方法来实施我的想法


谢谢。

很多事情都会导致性能问题,但是等待的
任务。延迟
是更好的方法之一。它重量轻,不堵塞螺纹,适用于相当轻的管道。其执行情况如下:

public static Task Delay(int millisecondsDelay, CancellationToken cancellationToken)
{
  //error checking
  Task.DelayPromise delayPromise = new Task.DelayPromise(cancellationToken);
  if (cancellationToken.CanBeCanceled)
    delayPromise.Registration = cancellationToken.InternalRegisterWithoutEC((Action<object>) (state => ((Task.DelayPromise) state).Complete()), (object) delayPromise);
  if (millisecondsDelay != -1)
  {
    delayPromise.Timer = new Timer((TimerCallback) (state => ((Task.DelayPromise) state).Complete()), (object) delayPromise, millisecondsDelay, -1);
    delayPromise.Timer.KeepRootedWhileScheduled();
  }
  return (Task) delayPromise;
}
公共静态任务延迟(int毫秒延迟、取消令牌取消令牌)
{
//错误检查
Task.DelayPromise DelayPromise=新Task.DelayPromise(cancellationToken);
如果(cancellationToken.canbecancelled)
delayPromise.Registration=cancellationToken.InternalRegisterWithoutEC((操作)(状态=>((任务.延迟承诺)状态).Complete(),(对象)delayPromise);
如果(毫秒显示!=-1)
{
delayPromise.Timer=新计时器((TimerCallback)(state=>((Task.delayPromise)state).Complete(),(object)delayPromise,毫秒延迟,-1);
delayPromise.Timer.KeepRootedWhileScheduled();
}
返回(任务)延迟承诺;
}
计时器
只是包装Win32计时器队列,它是在线程池上触发事件的增量队列:

CreateTimerQueue函数为计时器创建一个队列。计时器 此队列称为计时器队列计时器,是轻量级对象 允许您指定在 指定的到期时间到达


大量的任何操作都会导致性能问题,但是这可能比其他方法更好,因为它不会阻塞线程,并且可以在计时器上工作,如果发送到rabbitmq失败,您可以在x秒后重试发送n次。然后假设连接已断开,等待手动干预。继续等待和发送更长时间只会导致休眠/等待线程。您能给出一个近似值吗?“大数字”太模糊了。@TheodorZoulias我理解你的意思,我认为我应该添加一个断路器。@Prateek Shrivastava谢谢你的帮助。我理解你的意思,我认为我应该添加一个断路器