Это не имеет особого смысла. Если метод должен ждать для завершения задачи, то вам не нужен отдельный поток вообще.
Что-то вроде "call async и notify когда будет выполнено" будет иметь больше смысла:
void CallAsyncAndNotifyWhenDone<T>(Func<T> func, Action<T> callback)
{
ThreadPool.QueueUserWorkItem(obj =>
{
T result = func();
callback(result);
});
}