У меня есть задача, которая периодически проходит 10 секунд. Я делаю некоторые обновления освежающих процессов, читая базу данных. Я хочу, чтобы вызывать или пробуждать поток и выполнять операцию обновления, когда я нажимаю кнопку на кнопку. Короче говоря, я хочу, чтобы задача обновления управлялась не только временем, но и событием вместе. Это возможно? Если да, то как? Кодовый блок для задачи показан ниже.Пробуждение задания во время сна
while (true)
{
// do some refresh operation
Thread.Sleep(10000);
}
void button1_Click(object sender, EventArgs e)
{
// invoke or awaken thread
}
не с этим время цикла - в основном с Thread.Sleep вы говорите Windows - не планируйте этот поток в течение следующих 10 секунд. Я не знаю, как это получить. Вы можете уменьшить временной интервал и проверить переменную внутри цикла. – Bond
Используйте таймер! он построен для этого. Вы даже избегаете выполнения многопоточных операций, поскольку событие тика будет запущено в потоке пользовательского интерфейса. –
Что я не понимаю, так это: предположим, что таймер обновил графический интерфейс, а затем через 5 секунд вы нажмете кнопку для другого обновления вручную. Если таймер запускает собственное обновление через 5 секунд или останавливается до следующего хода? – Tudor