Я пишу программу, которая может быть легко разделена на несколько отдельных частей. Упрощенно это будет выглядеть следующим образом:Как запустить (создать?) Класс в отдельном потоке?
Reader
класс будет работать с получением данных из определенного устройства,Analyzer
класс будет выполнять вычисления на основе данных, полученных от устройства через регулярные промежутки времени,Form1
класс который выводит пользовательский интерфейс (графическое представление данных, собранныхReader
и вывода чисел с помощьюAnalyzer
Естественно, я хотел бы эти три класса для запуска в сентябре (на отдельных ядрах). Значение - все методы Reader
работают в своем потоке, все методы Analyzer
работают в своем собственном потоке, а Form1
работает по умолчанию.
Однако все, что приходит на ум использует Thread
или BackgroundWorker
классов, а затем вместо вызова какой-либо ресурс тяжелый метод на Reader
или Analyzer
я вместо того, чтобы позвонить
BackgroundWorker.RunWorkerAsync()
Я полагаю, что это не лучший способ сделать это, не так ли? Я бы предпочел каким-то образом создать класс в отдельном потоке и оставить его там на всю жизнь, но я просто не понимаю, как это сделать ... И я не могу придумать подходящий поисковый запрос, потому что я не нашли ответа, когда я его искал.
EDIT: Спасибо за комментарии, я думаю, что я понимаю, что сам вопрос предполагал, что вы можете создать класс «в потоке» - с подразумеваемым значением «любой метод этого класса, который будет вызван в его потоке »- это не имеет смысла и не может быть сделано.
Вы не выполняете класс в потоке. Поток запускает методы. Из разных классов или многих потоков, вызывающих 1 класс. –
[TLS Dataflow] (http://msdn.microsoft.com/en-us/library/hh228603 (v = vs.110) .aspx) может стать отличным инструментом для такой задачи. – Noseratio