【发布时间】:2019-09-11 11:34:56
【问题描述】:
您好,我有一个问题,我有一个简单的定时事件,如下所示:
public override async Task Execute(uint timedIntervalInMs = 1)
{
timer.Interval = timedInterval;
timer.Elapsed += OnTimedEvent;
timer.AutoReset = true;
timer.Enabled = true;
}
protected override void OnTimedEvent(object source, ElapsedEventArgs evrntArgs)
{
Task.Run(async () =>
{
var message = await BuildFrame();
await sender.Send(message, null);
});
}
它的作用是构建大约 27 个字节的简单字节数组并通过 UDP 发送,我想每 1 毫秒发送一次该消息,但是当我使用计时器检查时,发送 1000 个请求大约需要 2-3 个(所以大约 330 帧每秒)秒,这不是我的目标,我怀疑计时器正在等待事件完成其工作。这是真的吗,是否可以避免这种情况,所以无论事件是否完成,我都可以每毫秒开始发送帧?
【问题讨论】:
-
什么东西需要每秒更新 1000 次?,这似乎有点过分,甚至有点 DOS-ey。
-
正是我需要它来进行设备压力测试。
-
定时器没有这么高的分辨率,时间间隔以毫秒为单位,但实际上并没有这种能力。所以基本上这行不通。是否可以将一些消息打包以便平均达到目标速率?
-
啊好吧,现在更有意义了。
标签: c#