Или, чтобы сохранить тот же шаблон, создайте делегат с сигнатурой метода, который вы хотите использовать в качестве асинхронного метода, и выполните BeginInvoke
/ EndInvoke
для делегата.
Конечно, это не делает метод действительно асинхронным, поскольку за кулисами все еще есть поток, который ожидает возврата метода синхронизации, но позволяет использовать нормальный шаблон и использует поток из пула потоков для создания вызов.