Вы не можете передать ответ своему клиенту по первому запросу. Вам нужно будет вернуть токен, который клиент впоследствии запросит другой метод в вашем классе, чтобы проверить, завершена ли операция; если операция завершена, метод возвращает результат, в противном случае он возвращает результат, чтобы указать, что он должен продолжить опрос.
Если вы используете .NET 4.0, я бы рекомендовал использовать Task<T>
класс и передать его обратно вашему клиенту; ваш клиент может опросить результат, подождать его, получить уведомление, когда он будет сделан, и т. д.
Если вы не работаете с .NET 4.0, я рекомендую использовать пользовательский Delegate
, назначить ему анонимный метод / группу методов и затем вызвать BeginInvoke для делегата; это вернет реализацию IAsyncResult
, которую можно использовать для выполнения операций, упомянутых выше (опрос, ожидание и т. д.).