Промежуток времени в диспетчереTimer

Я программирую приложение WPF в VS С# 2010 и программирую симуляцию. Эта симуляция может быть запущена автоматически (нажатием кнопки Auto) или пошагово (нажатием кнопки Step). Однако то, что я хочу реализовать, - это контроль скорости.

Я разработал простой comboBox с 4 возможными элементами (1,2,5,10), которые представляют скорость симуляции. Вот код, который я использую:

private void button6_Click(object sender, EventArgs e)
    {
        int speed = Int32.Parse(comboBox1.Text.ToString());
        dispathcerTimer = new DispatcherTimer();
        dispathcerTimer.Tick +=new EventHandler(dispatcherTimer_Tick);
        dispathcerTimer.Interval = new TimeSpan(0, 0, 0, Convert.ToInt32(1000/speed));
        dispathcerTimer.Start();
    }

Что это должно сделать, так это взять значение, выбранное в поле со списком, и, поскольку TimeSpan не принимает двойное число, только Int32, я должен использовать 4-й параметр, миллисекунды. Я думал, что сделать 1000/скорость будет работать, но это абсолютно не так, время еще больше. Как я могу изменить временной интервал, например, чтобы уменьшить его с 1 секунды (по умолчанию при скорости x1) до каждых 200 мс, когда пользователь выбирает параметр x5?


person jquery_stack    schedule 17.10.2015    source источник


Ответы (1)


Вы используете неправильную перегрузку TimeSpan, четвертый аргумент на самом деле для second (первый для day). Вместо этого попробуйте этот простой статический метод TimeSpan.FromMilliseconds:

dispathcerTimer.Interval = TimeSpan.FromMilliseconds(1000/speed);
person King King    schedule 17.10.2015