Вы можете запустить его в статическом конструкторе для класса:
private class MyClass
{
static MyClass()
{
// start thread here
}
}
Вы также можете запустить его в обычном конструкторе класса, используя типичный одноэлементный подход.
Или вы можете использовать новый подход .NET 4 Lazy<T>
для его создания и запуска.
НО, как правило, не рекомендуется выполнять работу в конструкторах классов. Лучшим подходом было бы убедиться, что поток существует только тогда, когда кто-то вызывает, скажем, Execute()
в экземпляре класса. В методе Execute
вы можете использовать Lazy<T>
или одноэлементный подход для создания и запуска экземпляра одного потока, который будет его обрабатывать.
Пуристы укажут, что на самом деле вы, вероятно, вообще не хотите этого делать и что подход Factory может быть лучше для создания экземпляров вашего класса, и что вам следует разделить проблемы между вашим классом и работником, который его обрабатывает. .
Другой предполагает, что вам вообще не нужен поток, просто используйте .NET4 Task
s и поставьте в очередь элементы для выполнения, используя предоставленные платформой методы queue / execute.