Синхронный таймер в .net? - PullRequest
0 голосов
/ 01 ноября 2011

Я создаю приложение в Visual C ++ 2008 Express Edition, приложении для форм Windows, поэтому использую Managed C ++ / CLI.

Я новичок в этом, и мне нужно следующее:

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

Я попытался сделать это с таймером System.Windows.Forms, и он просто выполняет код сразу после события timer-> Enabled = true.

Вот код, если он помогает:

   private:System::Void hidReboot(System::Void) {
    System::UInt16 res = 0;

    //bring up form to display progress bar

    res = SendRebootCmd();
    if (res == true)
    {
        timer1->Enabled = true; //in this tick event..i have the progress bar stuff
        //some other code here
    }
}

Таким образом, в основном, когда в комментарии говорится // какой-то другой код, я хочу делать это только тогда, когда индикатор выполнения выполнен и таймер насчитал до 30 тиков (с шагом 1 секунда - 30 секунд).

Я попытался поместить цикл while, но я не могу использовать его, так как он зависает в потоке пользовательского интерфейса, таким образом не вызывая событие tick таймера.

Любые предложения, чтения или советы будут с благодарностью. Спасибо!

Ответы [ 2 ]

1 голос
/ 01 ноября 2011

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

Добавьте остаток функции в таймер с проверкой, определяющей, закончился ли обратный отсчет.

0 голосов
/ 01 ноября 2011

Windows.Forms.Timer подходит для этого. Я подозреваю, что ваш интервал не подходит.

В вашем случае установите Интервал на 1000 (это в мс, а не в секундах). Это должно привести к тому, что событие Tick происходит один раз в секунду.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...