1

Dispatcher タイマーを試しましたが、正しく動作していないようです。

ティックごとにティックカウンターに追加するティックイベントを設定しましたが、正しく機能していません。経過時間をカウントするストップウォッチも持っていますが、数字が一致しません。毎秒 192 ティックを得るためにどのような解決策が機能するか教えてください。

    Stopwatch sw = new Stopwatch();
    public DispatcherTimer dt = new DispatcherTimer();
    dt.Tick += dt_Tick;
    dt.Interval = TimeSpan.FromMilliseconds(1000/192);
    dt.Start();
    sw.Start();

void dt_Tick(object sender, EventArgs e)
{
    tick_textbox.Text = tick_counter.ToString();
    seconds_textbox.Text = sw.Elapsed.ToString();
    tick_counter++;
}

ここで、1 秒あたり 8 に下げました。これで解像度の問題は解決するはずですが、TimeSpan.FromSeconds と TimeSpan.FromMilliseconds の間隔を使用すると、結果が大きく異なります。

    dt.Tick += dt_Tick;
    dt.Interval = TimeSpan.FromSeconds(2 / 16);
    dt.Start();

対。

    dt.Tick += dt_Tick;
    dt.Interval = TimeSpan.FromMilliseconds(2000 / 16);
    dt.Start();

その理由は何ですか?

4

1 に答える 1