Архитектурно, я бы создал поток из главной формы, который будет вызывать вашу библиотеку классов.Кто знает, может быть, какой-то другой класс, вызывающий вашу библиотеку, не нуждается в вызове в потоке.
В моем основном классе у меня есть что-то вроде:
this._checkSessionTimer = new Timer(intTimer * 2000);
this._checkSessionTimer.Elapsed += (o, e) => CheckSessions();
И CheckSessions отправляетсявызывайте все, что ему нужно.
Я также использую фоновые рабочие для выполнения своей работы, требующей длительных задержек с веб-сервером:
BackgroundWorker linkWorker = new BackgroundWorker();
linkWorker.DoWork += (o, e) =>
{
...
};
linkWorker.RunWorkerAsync();
Анонимная функция в моем рабочем DoWork фактически использует мой веб-сервисобертка для звонков через веб-сервис.
Однако, прежде чем делать подобные вещи, я ДЕЙСТВИТЕЛЬНО рекомендую прочитать:
http://www.albahari.com/threading/