Как мне прервать задачу .NET?

Вот ситуация, я пишу структуру для конкурса войны кода. По мере выполнения кода для каждого хода он вызывает метод из библиотеки, предоставленной каждым участником. Правила конкурса - метод должен вернуться через 1 секунду, иначе мы убьем вызывающую их задачу. Затем мы используем результат по умолчанию для этого хода.

Этот метод не поддерживает отмену, потому что мы не можем доверять вызываемому коду, чтобы ответить на отмену. И нам нужно убить поток, потому что если у нас есть 10 или 20 проигнорированных фоновых задач, тогда все последующие вызовы будут обеспечивать меньшее количество тактов для каждого вызова, а методы, которые раньше занимали менее 1 секунды, теперь занимают больше.

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

Обновление: Здесь нужно помнить о двух вещах. Во-первых, это похоже на игру, поэтому важна производительность. Во-вторых, у рабочего потока вряд ли будут открытые ресурсы. Если один из вызываемых методов работает слишком долго, мне нужно прервать его и быстро продолжить.

6
задан David Thielen 13 August 2011 в 23:07
поделиться