Вы не можете сделать это, если не измените метод.
Есть два способа:
- Метод построен таким образом, что он сам измеряет, как долго он работает, а затем преждевременно возвращается, если он превышает некоторый порог.
- Метод построен таким образом, что он отслеживает переменную / событие, которое говорит «когда эта переменная установлена, пожалуйста, выйдите», а затем у вас есть другой поток, измеряющий время, потраченное в первом методе, и затем устанавливающий, что переменная, когда истекшее время превысило некоторый порог.
Наиболее очевидный, но, к сожалению, неправильный ответ, который вы можете получить здесь: «Просто запустите метод в потоке и используйте Thread.Abort, если он слишком долго работал».
Единственно верный способ заключается в том, чтобы метод взаимодействовал таким образом, чтобы он выполнял чистый выход, если он работал слишком долго.
Существует также третий способ, когда вы выполняете метод в отдельном потоке, но после ожидания его завершения, а для этого требуется слишком много времени, вы просто говорите: «Я не собираюсь ждать его завершения» , но просто откажитесь от этого ". В этом случае метод все равно будет работать и в конечном итоге завершится, но тот другой поток, который его ожидал, просто прекратит работу.
Думайте о третьем способе, как о том, чтобы позвонить кому-нибудь и попросить его найти в их доме ту книгу, которую вы одолжили ему, и после того, как вы подождете 5 минут на своем конце телефона, вы просто скажете «ау, бросьте это» и повесьте вверх. В конце концов, этот другой человек найдет книгу и вернется к телефону, только чтобы заметить, что вы больше не заботитесь о результате.