Мы включили кнопку «Остановить сценарий», которая запускала .Прервать поток, в котором запускался сценарий, что полезно на случай, если они случайно запустили сценарий. создавать сценарии с бесконечным циклом или если они хотят по какой-либо причине прервать их выполнение на полпути.
Это отлично сработало, но потом мы начали мигрировать приложение на .NET, и теперь мы не можем использовать .Прервать больше.
Как лучше всего заменить функцию «Остановить сценарий» в .NET? Некоторые варианты, которые мы рассмотрели:
- Рекомендуемый способ прервать потоки и задачи в .NET — использовать токены CancellationTokens, но это означает, что нашим пользователям придется включать эти проверки в их скриптах. Мы не хотим полагаться на то, что они это сделают (они не программисты), и мы не хотим заставлять их переделывать все существующие сценарии, поэтому мы не хотим этого делать.
- Компиляция сценария в двоичный файл и запуск его в отдельном потоке может сработать, но мы потеряем возможность совместного использования пространства имен приложения со сценариями.
- Я сделал это слышал о ApplicationDomains, но, видимо, даже если вы их выгрузите, потоки все равно будут выполняться до тех пор, пока не закончатся, так что это не решение.
- Я рассматривал возможность использования плетения для внедрения проверок CancellationTokens, но я Никогда не пользовалась плетением и не знаю, возможно ли это вообще или излишне.
Подробнее здесь: https://stackoverflow.com/questions/790 ... pts-in-net