C# 如何计算在10毫秒内调用方法的频率?
我有一个sensorlistener,它在每次事件发生时都运行“onsensorchanged”方法。现在我想知道这个方法在10毫秒内执行的频率 我有一个timespan(当前时间戳-上一个时间戳),当我的timespan(总毫秒)小于10时,它应该执行“counter++”。 不幸的是我的计数器总是0。 我在onSensorChanged方法之外进行了初始化,因为每次方法运行时它都会进行初始化(到0)C# 如何计算在10毫秒内调用方法的频率?,c#,C#,我有一个sensorlistener,它在每次事件发生时都运行“onsensorchanged”方法。现在我想知道这个方法在10毫秒内执行的频率 我有一个timespan(当前时间戳-上一个时间戳),当我的timespan(总毫秒)小于10时,它应该执行“counter++”。 不幸的是我的计数器总是0。 我在onSensorChanged方法之外进行了初始化,因为每次方法运行时它都会进行初始化(到0) DateTime时间戳; 日期时间间隔; TimeSpan-deltaT; int计数器=0
DateTime时间戳;
日期时间间隔;
TimeSpan-deltaT;
int计数器=0;
传感器更改时的公共无效(传感器事件e)
{
timestamp=System.DateTime.Now;//Now的时间戳
deltaT=timestamp-timestalt;//事件1和事件2的时间戳的增量
//如果两个事件之间的增量发生在10毫秒之前,则忽略
如果(deltaT.totalmillizesDateTime.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();
}