#c# #.net #process #sandbox
#c# #.net #процесс #изолированная среда
Вопрос:
Итак, мне нужно запустить динамически скомпилированный ненадежный код в новом процессе. Я нашел, как это сделать в новом AppDomain (http://msdn.microsoft.com/en-us/library/bb763046.aspx ) но не новый процесс. Возможно ли это сделать?
Причина, по которой мне нужен новый процесс, заключается в том, что проще перехватывать стандартный вывод, видеть потребление памяти и процессора и завершать его.
Конечная цель — написать онлайновый компилятор C #.
Ответ №1:
Домены приложений — это способ изоляции.ЧИСТЫЙ код в системе. Процессы — это механизм изоляции операционной системы. В какой-то степени вы откажетесь от тонкостей .NET-кода и вам придется вручную управлять передачей данных между процессами.
Ознакомьтесь с классом Process. Похоже, вам нужно либо скомпилировать свой код в .exe, либо создать host .exe в .NET, который загружает ваш код. Последнее кажется лучше, поскольку вы можете просто написать хост один раз, а затем написать стандартный код связи с этим хостом.
Вы не предоставляете много информации о ваших конечных целях, но последние версии .NET предоставляют различные подключаемые API, на которые, возможно, стоит взглянуть.