1

Open Hardware Monitor にいくつかの変更を加えています。ネットワーク アダプターのダウンロードとアップロードの速度を追加します。しかし、ダウンロード速度を計算すると、計算が間違っています。

OHM の自動更新が原因で、正しいダウンロード速度を計算するためにタイマーを使用できません。ここのソースでは、ダウンロード速度 (Mb/s) の計算方法を確認できます。

クラスの構成では、次のことを行います。

IPv4InterfaceStatistics interfaceStats = netInterfaces.GetIPv4Statistics();

bytesSent = interfaceStats.BytesSent;
bytesReceived = interfaceStats.BytesReceived;

stopWatch = new Stopwatch();
stopWatch.Start();

update メソッドが呼び出されると (ランダムな時間に)、次のようにします。

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;                 
}

誰かが私の問題を見てくれることを願っていますか?

ここに画像の説明を入力

スクリーンショットを追加

4

2 に答える 2

0

次の変更が役立つはずです...

speed = netInterfaces.Speed / 1048576L;

私の記憶が正しければ、Speedプロパティは でlongあり、それを で割るintと、切り捨てられた結果になります。これにより、他の計算で同様の一連の変更が行われます...

usedDownloadSpeed.Value = ((bytesCalc / time) * 1000L)/1024L;

...結果や計算の暗黙的な変換で切り捨てられた値を取得していないことを確認することusedDownloadSpeed.Valueも想定しています。longキャストが正しいことを二重に確認したい場合は、 を使用してConvert.ToInt64()ください。

于 2014-03-18T16:55:59.140 に答える