У меня есть следующий код, который выполняется в потоке, который я создаю всякий раз, когда я получаю входной пакет, который обрабатывает пакет строк данных.Я хочу, чтобы пакетная обработка приостанавливалась, а состояние (т. Е. Обрабатываемая строка) сохранялось, если пользователь нажимает кнопку Пауза.
bool pause = false;
int rowBeingProcessed = -1;
void Process(List<Row> batch)
{
for(int i=0; i<batch.size(); i++)
{
if(pause)
{
rowBeingProcessed = i; // save state
break; // stop execution
}
}
}
void PauseSignalHandler()
{
pause = true;
}
Теперь, даже если я использовал метод событий / сигналов для выполненияПауза, я все еще опрашиваю переменную pause внутри цикла for
.
Я знаю, что могу переместить часть save state
в PauseSignalHandler()
, но это не устраняет проблему, потому что мне все еще нужно опросить на pause
на break
цикле for
.
Есть ли способ, с помощью которого можно полностью избежать опроса в этом сценарии?