C# 如何计算在10毫秒内调用方法的频率?

C# 如何计算在10毫秒内调用方法的频率?,c#,C#,我有一个sensorlistener,它在每次事件发生时都运行“onsensorchanged”方法。现在我想知道这个方法在10毫秒内执行的频率 我有一个timespan(当前时间戳-上一个时间戳),当我的timespan(总毫秒)小于10时,它应该执行“counter++”。 不幸的是我的计数器总是0。 我在onSensorChanged方法之外进行了初始化,因为每次方法运行时它都会进行初始化(到0) DateTime时间戳; 日期时间间隔; TimeSpan-deltaT; int计数器=0

我有一个sensorlistener,它在每次事件发生时都运行“onsensorchanged”方法。现在我想知道这个方法在10毫秒内执行的频率

我有一个timespan(当前时间戳-上一个时间戳),当我的timespan(总毫秒)小于10时,它应该执行“counter++”。 不幸的是我的计数器总是0。 我在onSensorChanged方法之外进行了初始化,因为每次方法运行时它都会进行初始化(到0)

DateTime时间戳;
日期时间间隔;
TimeSpan-deltaT;
int计数器=0;
传感器更改时的公共无效(传感器事件e)
{
timestamp=System.DateTime.Now;//Now的时间戳
deltaT=timestamp-timestalt;//事件1和事件2的时间戳的增量
//如果两个事件之间的增量发生在10毫秒之前,则忽略

如果(deltaT.totalmillizes
DateTime.Now
本身可能需要太多时间进行计算,那么最好使用
系统.Diagnostics.Stopwatch

大概是这样的:

Stopwatch stopwatch = new Stopwatch();
int counter = 0;

public void OnSensorChanged(SensorEvent e)
{
    if (!stopwatch.IsRunning)
    {
        // start the stopwatch
        stopwatch.Start();
    }
    else
    {
        if (stopwatch.ElapsedMiliseconds <= 10)
        {
            counter++;
            return;
        }
    }

    Console.WriteLine(counter);

    // 10ms passed, restart the stopwatch
    stopwatch.Restart();
}
秒表秒表=新秒表();
int计数器=0;
传感器更改时的公共无效(传感器事件e)
{
如果(!秒表正在运行)
{
//启动秒表
秒表。开始();
}
其他的
{

如果(stopwatch.elapsedmilis)用于毫秒计时的是System.Diagnostics.stopwatch(),则根本无法保证.Now的更新频率。
Stopwatch stopwatch = new Stopwatch();
int counter = 0;

public void OnSensorChanged(SensorEvent e)
{
    if (!stopwatch.IsRunning)
    {
        // start the stopwatch
        stopwatch.Start();
    }
    else
    {
        if (stopwatch.ElapsedMiliseconds <= 10)
        {
            counter++;
            return;
        }
    }

    Console.WriteLine(counter);

    // 10ms passed, restart the stopwatch
    stopwatch.Restart();
}