public IAsyncResult BeginFindServers( string endpointUrl, string endpointTransportProfileUri, string actualEndpointUrl, IList <string> preferredLocales, IList <string> serverUris, AsyncCallback callback, object callbackData) { DiscoveryClient client = CreateClient(endpointUrl, endpointTransportProfileUri); FindServersData data = new FindServersData(callback, callbackData, client.OperationTimeout) { DiscoveryClient = client }; data.InnerResult = client.BeginFindServers( null, (actualEndpointUrl) ?? endpointUrl, new StringCollection((preferredLocales) ?? PreferredLocales), (serverUris != null) ? new StringCollection(serverUris) : null, OnFindServersComplete, data); return(data); }
private void OnFindServersComplete(IAsyncResult result) { FindServersData data = result.AsyncState as FindServersData; try { ApplicationDescriptionCollection servers = null; data.DiscoveryClient.EndFindServers(result, out servers); data.Servers = servers; data.OperationCompleted(); } catch (Exception e) { data.Exception = e; data.OperationCompleted(); } }
public List <ApplicationDescription> EndFindServers(IAsyncResult result) { FindServersData data = result as FindServersData; if (data == null) { throw new ArgumentException("Did not pass the correct IAsyncResult to end method.", "success"); } try { if (!data.WaitForComplete()) { throw new TimeoutException(); } return(data.Servers); } finally { data.DiscoveryClient.Close(); } }