改善c# (. net)应用程序的循环延迟

本文关键字:循环 延迟 应用程序 net 改善 | 更新日期: 2023-09-27 18:12:53

我有一个关于获得非常高延迟的一般性问题。我正在为具有Windows Embedded Pro 7的目标设备编码。所以我认为我可以获得实时性能(从我所读到的)。我正在使用"系统"。Timers"用于设置时间周期。下面是

中的示例
    public void updateCycle50ms( )
    {
        Stopwatch t = Stopwatch.StartNew();
        System.TimeSpan timer50ms = System.TimeSpan.FromMilliseconds(50);    
        while (1 == 1)
        {
            // Sending Message
            CANSEND(ref msg);  // This function sends Message over CAN network.  
            while (t.Elapsed < timer50ms)
            {
                // do nothing
            }
        }
    }

我想做的是每50毫秒发送一条消息,但在周期从29ms到90ms(我可以在接收端看到它)。你们能告诉我为什么我不能实现我的目标吗?我是否需要使用另一个。net类或有特殊的类,可以在Windows Embedded中使用,以获得实时性能(或更接近)。

改善c# (. net)应用程序的循环延迟

尝试使用system . timer . timer类:

private System.Timers.Timer timer;
public void updateCycle50ms( )
{
    // Create a timer with a 50ms interval.
    timer= new System.Timers.Timer(50);
    // Hook up the Elapsed event for the timer. 
    timer.Elapsed += (s, e) =>
    {
        // Sending Message
        CANSEND(ref msg);
    };
    // Have the timer fire repeated events (true is the default)
    timer.AutoReset = true;
    // Start the timer
    timer.Enabled = true;
    // If the timer is declared in a long-running method, use KeepAlive to prevent garbage collection
    // from occurring before the method ends. 
    // GC.KeepAlive(timer)
}