.NET C#, тянущий медленно

Короткий ответ

Из кода, который вы разместили, действительно только кажется, что вам нужно изменить код на , отключить флажок в событии CheckChanged и активируют его в событии timer1_Tick (а также Stop таймер в событии Tick).

Полный ответ

У Winforms есть элемент управления Timer, который вы можете использовать для этого. После того, как вы добавите Timer в конструктор, установите для свойства Interval количество миллисекунд, которое вы хотите подождать, прежде чем активировать флажок (1 секунда - 1000 миллисекунд, поэтому 15 минут - 15 мин * 60 сек / мин * 1000 мс / сек или 900,000 мс). Затем дважды щелкните по нему, чтобы создать обработчик события Tick (или добавьте его в ваше событие Form_Load, как я делал ниже).

Затем, в событии CheckChanged, если флажок не установлен, отключите флажок и запустите таймер.

Затем, в событии Tick, просто включите флажок (помните, это событие срабатывает после того, как прошло Interval миллисекунд) и остановите таймер.

Например:

private void Form1_Load(object sender, EventArgs e)
{
    // These could also be done in through designer & property window instead
    timer1.Tick += timer1_Tick; // Hook up the Tick event
    timer1.Interval = (int) TimeSpan.FromMinutes(15).TotalMilliseconds; // Set the Interval
}

private void timer1_Tick(object sender, EventArgs e)
{
    // When the Interval amount of time has elapsed, enable the checkbox and stop the timer
    checkBox1.Enabled = true;
    timer1.Stop();
}

private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
    if (!checkBox1.Checked)
    {
        // When the checkbox is unchecked, disable it and start the timer
        checkBox1.Enabled = false;
        timer1.Start();
    }
}
6
задан mmr 9 January 2009 в 00:16
поделиться

4 ответа

В дополнение к профилировщику, который был упомянут, Вы могли бы также выключить свои контексты OpenGL. Если Вы заметите ускорение, то Вы будете знать, что это - Ваш графический материал, и можно сфокусировать оптимизации соответственно.

Очки присуждаются за шведский юмор.

1
ответ дан 17 December 2019 в 20:36
поделиться

Как я могу разыскать его?

dotTrace - http://www.jetbrains.com/profiler/

1
ответ дан 17 December 2019 в 20:36
поделиться

Я никогда не использовал OpenGL таким способом сам, но Вы могли бы хотеть посмотреть на путь в этом, контексты OpenGL зеркально отражаются. При переключении от одной страницы до другого Вы могли бы получать сброс устройства (в терминах DirectX), который мог вызывать задержку.

Если вообще возможный имеют устройство, тянут к задней Системе. Рисование. Битовый массив и использование, которые побитово отображают на экранах. Сделайте свой код OpenGL, знающий о текущей странице, пользователь идет, и Вы могли бы получить скорость, Вы ищете.

Для тестирования этого прежде, чем внести огромные изменения попытайтесь удалить дисплеи OpenGL на форме.

Это - весь прихоть.

0
ответ дан 17 December 2019 в 20:36
поделиться

Вы делаете какую-либо другую обработку во время "экранного события" зеркального отражения? кроме просто разрешения форме быть перерисованным? Если Вы обрабатываете что-то между зеркальными отражениями (возможно, Ваше дополнение C++?), и Вы не многопоточность, Вы получаете того белого эффект. Форма, вероятно, ожидает в течение процессорного времени для перерисовки себя.

0
ответ дан 17 December 2019 в 20:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: