Контрольная работа: Особливості багатозадачності в середовищі Windows
goto _L_EndbreakTask;
}
else if(result == WAIT_TIMEOUT) // Потік не відповідає.
{ // Підготовляємо рядок запиту.
sprintf(s,,
"Потік # %і не відповідає...\nобїект %s\n Зробіть вибір: \n\
'Так' - повторити команду на зняття \n\
'Немає' - зняти потік примусово \n\
'Скасувати' - не знімати потік"
TaskCollection->indexOf(tsk)+1,
tsk->getName());
}
// Висновок запиту на екран.
result = MsgBox(s, msg|msgSound);
switch(result) // Аналіз відповіді.
{
case cmNo: // Примусове зняття потоку.
tsk->putState(tsCrash,True); // Виставляємо прапор
tsk->endTask(); // Заключні операції
TerminateThread(tsk->TaskHnd95,0); // Знімаємо потік
goto _L_EndbreakTask;
case cmCancel: // Скасування зняття потоку.
goto _L_EndbreakTask;
}
}
else if(WAIT_FAILED) // Відбулася помилка доступу до об'єкта.
{ // Примусове зняття потоку.
SIL(); // Звуковий сигнал
tsk->endTask(); // Заключні операції