Если ваш класс реализует эти методы пары Begin / End согласно интерфейсу, то вы можете контролировать, как на самом деле выполняется работа. Я полагаю, что делегаты (типом которых является типовое родовое устройство) будут использовать пул потоков по умолчанию, и поэтому они будут выполняться совместно используемым потоком многократного использования. Так как возиться с пулом потоков не представляется возможным, прямые делегаты в этом случае не допускаются.
Вам нужно будет создать свой собственный объект Thread (передав в ваш метод новый ThreadStart) и установить его состояние квартиры, как вы уже указали. Этот метод просто должен иметь свой собственный способ обратного вызова, так как ванильные потоки не предоставляют удобный способ для моих знаний.
Вы также можете дополнительно использовать Задачи вместе с пользовательским StaTaskScheduler , если вы используете .NET 4.0, но это может быть больше проблем и / или сложностей, чем оно того стоит добавляет много зависимостей. Тем не менее, это устраняет проблему с обратным вызовом.