Кажется, нет смысла объявлять своего представителя, во-первых. Почему бы просто:
void Async(ThreadStart t) {
Thread thread = new Thread(t);
thread.IsBackground = true;
thread.Start();
}
? Лично я не вижу себя желающим делать это достаточно часто (и с нет способом узнать, как продвигается задача), чтобы оправдать отдельный метод. Если вы используете .NET 4, вам следует обратиться к параллельной библиотеке задач, которая по-прежнему позволяет запускать асинхронные задачи, но более полнофункциональным способом. (РЕДАКТИРОВАТЬ: Хорошо, так что вы не можете использовать это из .NET 2 - это стоит иметь в виду на будущее, хотя.)
Вы также можете рассмотреть возможность использования метода BeginInvoke
для делегатов, который в любом случае позволяет легко запускать их в пуле потоков - и передают аргументы:
Action<string, int> action = (name, age) => { ... };
IAsyncResult result = action.BeginInvoke("Jon", 35, null);
// Now you can use result if you want...
РЕДАКТИРОВАТЬ: Теперь вы сказали, что будете делать это несколько раз в секунду. Предполагая, что это кратковременная задача, вы почти наверняка должны использовать для этого пул потоков. Как и в примере выше, вы также можете использовать ThreadPool.QueueUserWorkItem
, чтобы добавить задачу в пул потоков. Это будет более эффективно (через повторное использование потоков), чем создание нового потока каждый раз, когда у вас есть задача.