Я новичок в среде .NET. Мне нужна служба Windows, метод Start
и Stop
вызовет определенный класс, скажем, метод Start и Stop MainContext соответственно. Класс MainContext будет содержать список расширений, загруженных через MEF. Каждое расширение необходимо запускать как отдельный поток одновременно.Запуск и остановка параллельных потоков через службу Windows
Класс MainContext
будет содержать два общедоступных метода Start
и Stop
, оба типа возвращаемого типа и не содержат аргументов. При вызове метода Start
он запускает поток для каждого расширения, загружаемого через MEF одновременно. В то время как метод Stop
остановит все потоки, запущенные с помощью метода Start
.
Какая из лучших практик резьбы в этой ситуации? Я запутался. Должен ли я использовать класс System.Threading.Tasks.Task
или класс System.Threading.Thread
для многопоточности или использовать любую другую технику? Что будет лучше соответствовать моим требованиям и обеспечит мне большую гибкость и стабильность?
'System.Threading.Thread' соответствует вашим потребностям, а не' System.Threading.Tasks.Task', однако вам также нужна некоторая логика внутри ваших методов потоков, чтобы остановить поток. –
Представим себе, что у вас есть 100 расширений и один двухъядерный процессор. В этом случае запуск 100 потоков не поможет вам сделать программу быстрее. Вы должны рассказать о характере ваших расширений - какую работу они выполняют? – Dennis
@ Dennis: 100 расширений не было бы в моем приложении. Скажем, в большинстве случаев от 5 до 8 расширений будут работать одновременно. И для каждого продления нет тяжелой работы. Это будет очень простой и легкий вес, скажем, просмотр файловой системы и т. Д. –