Я смотрю на реализацию API, где несколько операций могут выполняться одновременно.Основанная на событиях асинхронная модель была рекомендована MS:
// Asynchronous methods.
public void Method1Async(string param, object userState);
public event Method1CompletedEventHandler Method1Completed;
public void CancelAsync(object userState);
public bool IsBusy { get; }
Однако это кажется немного неуклюжим - требуется, чтобы клиенты отфильтровывали ответы, которые им не предназначались, и отключали обработчик событий, когда это сделано.и т. д. Я думаю, что-то вроде:
AsyncOperation1(string parm, Action<T> callback)
Каждый клиент получает свои собственные результаты, полученные напрямую.У меня возникли проблемы с поиском элегантной поддержки отмены.Я предполагаю, что очевидным является то, что AsyncOperation1 возвращает некоторый токен, который может быть передан в метод CancelAsync.Я хотел бы узнать больше о том, какие другие асинхронные шаблоны широко используются в .Net или на других языках, которые могут быть переведены соответствующим образом