Timer.Change的价格是多少? [关闭]

问题描述 投票:0回答:1

考虑具有性能敏感,高度并行的C#处理管道的服务器,如果发生停止,例如,我们想在其中引发事件。媒体流。

一种理论上的方法是创建一个计时器,该计时器会被管道连续延迟。通过一个简单的例子:

const int IDLE_MILLIS = 1000; // 1 second

Timer timer = new Timer(IDLE_MILLIS, () =>
{
   Console.WriteLine("Pipeline is idle.");
});

void ProcessMediaFrame(MediaFrame frame)
{
    timer.Change(IDLE_MILLIS, Timeout.Infinite);

    // pipeline is not idle
}

Change方法在这里贵吗? (https://docs.microsoft.com/en-us/dotnet/api/system.threading.timer.change

Timer空闲时是否消耗任何资源?

c# performance timer
1个回答
2
投票

[C0中的性能说明(感谢Codexer链接正确的文件)说,您的情况正是他们为之优化的。

我们假设计时器是经常创建和销毁的,但实际上很少触发。

...

  • 操作超时...几乎永远不会触发,因为要点是计时器仅在出现问题时才触发。
© www.soinside.com 2019 - 2024. All rights reserved.