Как я могу прервать выполнение пользовательских сценариев в .NET?C#

Место общения программистов C#
Ответить
Anonymous
 Как я могу прервать выполнение пользовательских сценариев в .NET?

Сообщение Anonymous »

У меня есть приложение на .NET Framework 4.7.2, которое включает функцию сценариев: приложение включает в себя простую среду IDE, в которой пользователи могут писать свои собственные сценарии и запускать их в одном из пространств имен, используемых приложением, так что они могут использовать свои сценарии для автоматизации действий в приложении.
Мы включили кнопку «Остановить сценарий», которая запускала .Прервать поток, в котором запускался сценарий, что полезно на случай, если они случайно запустили сценарий. создавать сценарии с бесконечным циклом или если они хотят по какой-либо причине прервать их выполнение на полпути.
Это отлично сработало, но потом мы начали мигрировать приложение на .NET, и теперь мы не можем использовать .Прервать больше.
Как лучше всего заменить функцию «Остановить сценарий» в .NET? Некоторые варианты, которые мы рассмотрели:
  • Рекомендуемый способ прервать потоки и задачи в .NET — использовать токены CancellationTokens, но это означает, что нашим пользователям придется включать эти проверки в их скриптах. Мы не хотим полагаться на то, что они это сделают (они не программисты), и мы не хотим заставлять их переделывать все существующие сценарии, поэтому мы не хотим этого делать.
  • Компиляция сценария в двоичный файл и запуск его в отдельном потоке может сработать, но мы потеряем возможность совместного использования пространства имен приложения со сценариями.
  • Я сделал это слышал о ApplicationDomains, но, видимо, даже если вы их выгрузите, потоки все равно будут выполняться до тех пор, пока не закончатся, так что это не решение.
  • Я рассматривал возможность использования плетения для внедрения проверок CancellationTokens, но я Никогда не пользовалась плетением и не знаю, возможно ли это вообще или излишне.


Подробнее здесь: https://stackoverflow.com/questions/790 ... pts-in-net
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»