Есть ли способ в C# вызвать метод, чтобы, если метод длится до завершения, метод будет отменен, и он вернется к вызывающему методу? Я думаю, что могу сделать это с помощью потоковой передачи, но что делать, если потоки не нужны?Вызвать метод и отменить его и вернуться к вызывающему методу, если он слишком длинный
Для справки, метод, который мне может потребоваться для уничтожения/остановки/прерывания, вызывает API CorelDraw 15. Это открывает экземпляр CorelDraw, и я получил неповторяющиеся ошибки в этом методе. Смысл, я могу обработать одно и то же изображение дважды, и один раз он замерзнет или будет ошибкой, а другой - нет.
Текущее решение проблемы, которую я использую, состоит в том, чтобы иметь второе приложение, которое делает Process.Start(firstAppExecutablePath)
, а затем проверяет переменную в текстовом файле и, если переменная не изменяется через 10 минут, вызывается .Kill();
в экземпляре процесс. Я бы предпочел избежать этого решения, если это возможно, поскольку оно кажется неуклюжим и подверженным проблемам. Поскольку он работает .Kill();
, он очень запутан в том, как все близко, но, как правило, не вызывает проблемы.
Если это не резьбовые, то нет никакого способа проверить тайм-аут, потому что выполняющийся поток выполняет свой метод. Нет ничего, что можно было бы проверить: «Это слишком долго?» – dman2306
Является ли ваш api асинхронным? Для этого и служит CancellationToken. – Crowcoder
Что такое метод? – Luaan