【发布时间】:2014-04-23 01:16:54
【问题描述】:
我正在对 Open Hardware Monitor 进行一些更改。我将添加网络适配器的下载和上传速度。但是当我计算下载速度时,我得到了错误的计算。
由于 OHM 中的自动更新,我无法使用计时器来计算正确的下载速度。 在此处的源代码中,您可以看到我如何计算下载速度(以 Mb/s 为单位)。
在我做的类的构造中:
IPv4InterfaceStatistics interfaceStats = netInterfaces.GetIPv4Statistics();
bytesSent = interfaceStats.BytesSent;
bytesReceived = interfaceStats.BytesReceived;
stopWatch = new Stopwatch();
stopWatch.Start();
当更新方法被调用时(在某些随机时间)我这样做:
IPv4InterfaceStatistics interfaceStats = netInterfaces.GetIPv4Statistics();
stopWatch.Stop();
long time = stopWatch.ElapsedMilliseconds;
if (time != 0)
{
long bytes = interfaceStats.BytesSent;
long bytesCalc = ((bytes - bytesSent)*8);
usedDownloadSpeed.Value = ((bytesCalc / time) * 1000)/1024;
bytesSent = bytes;
}
希望有人能看到我的问题吗?
添加截图
【问题讨论】:
-
你是什么意思?当您划分两个整数类型
(bytesCalc/time)时,您会得到一个截断的整数结果,这可能是问题所在。 -
不确定这是否相关,但一个 KB 是 1024 字节,一个 MB 是 1024 KB。我在你的计算中看到了 1000 和 1000000。
-
我已经改变了我的计算方式为 double bytesCalc = (((double)bytes - (double)bytesSent)*8); usedDownloadSpeed.Value = (float)((double)(bytesCalc / time) * 1000);但它不起作用。 I 具有与旧计算相同的值。
-
请不要在问题标题中包含有关所用语言的信息,除非没有它就没有意义。标记用于此目的。
标签: c# download-speed openhardwaremonitor