public IAsyncResult BeginFindServersOnNetwork( string endpointUrl, string endpointTransportProfileUri, uint startingRecordId, uint maxRecordsToReturn, IList <string> serverCapabilityFilters, AsyncCallback callback, object callbackData) { DiscoveryClient client = CreateClient(endpointUrl, endpointTransportProfileUri); FindServersOnNetworkData data = new FindServersOnNetworkData(callback, callbackData, client.OperationTimeout) { DiscoveryClient = client }; data.InnerResult = client.BeginFindServersOnNetwork( null, startingRecordId, maxRecordsToReturn, (serverCapabilityFilters != null) ? new StringCollection(serverCapabilityFilters) : new StringCollection(), OnFindServersOnNetworkComplete, data); return(data); }
private void OnFindServersOnNetworkComplete(IAsyncResult result) { FindServersOnNetworkData data = result.AsyncState as FindServersOnNetworkData; try { DateTime lastCounterResetTime; ServerOnNetworkCollection servers = null; data.DiscoveryClient.EndFindServersOnNetwork(result, out lastCounterResetTime, out servers); data.LastCounterResetTime = lastCounterResetTime; data.Servers = servers; data.OperationCompleted(); } catch (Exception e) { data.Exception = e; data.OperationCompleted(); } }
public List <ServerOnNetwork> EndFindServersOnNetwork(IAsyncResult result, out DateTime lastCounterResetTime) { FindServersOnNetworkData data = result as FindServersOnNetworkData; if (data == null) { throw new ArgumentException("Did not pass the correct IAsyncResult to end method.", "success"); } try { if (!data.WaitForComplete()) { throw new TimeoutException(); } lastCounterResetTime = data.LastCounterResetTime; return(data.Servers); } finally { data.DiscoveryClient.Close(); } }