У меня есть клиент WCF (C #), который взаимодействует с сервером WCF. Это клиенты делают звонки асинхронно. Мне интересно, является ли следующая идея хорошей или плохой:
При вызове асинхронной операции от моего клиента WCF я устанавливаю переменную объекта asyncState в прокси-объект. В моей функции обратного вызова я извлекаю прокси-объект из значения AsyncState и вызываю .EndFunction для него.
Пример:
public void Login()
{
Client client = CreateWCFProxy();
client.BeginLogin(user, pass, OnLoginCompleted, client);
}
public void OnLoginCompleted(IAsyncResult result)
{
Client client = result.AsyncState as Client;
LoginResult loginResult = client.EndLogin(result);
}
Я мог бы хранить Клиента как члена класса, но если я делаю много одновременных асинхронных вызовов, которые могут усложниться. (Например, если прокси-сервер умирает, когда я выполняю один асинхронный вызов, мне нужно создать новый прокси-сервер. Но мне все еще нужно, чтобы старый прокси-сервер мог вызывать .EndFunction для других ожидающих асинхронных вызовов.