У меня есть функция, которую я хочу разрешить запускать в течение заданного промежутка времени, а затем, если она не завершилась сама по себе, отменить. Каков наилучший способ сделать это?
Лучшее, о чем я подумал, это запустить его в другом потоке, подождать с таймаутом, пока он не умрет, и затем использовать Thread.Abort()
, чтобы убить его (это может не сработать, если функция имеет неправильный тип catch
блок). Другим вариантом (который я не знаю, как заставить работать) будет какой-то упреждающий таймер с броском в нем.
Есть ли лучший способ? Какая-то простая система песочницы?
Редактировать: функция, которую я собираюсь запустить, не имеет никакой системы, чтобы проверить, должна ли она быть отменена, и я не могу (как в не должно ) добавить Это. Кроме того, это своего рода тестовый жгут, поэтому условие, при котором я буду убивать функцию, заключается в том, что она работает плохо. В этом случае я не могу рассчитывать на то, что он что-то делает правильно.