コード例 #1
0
        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);
        }
コード例 #2
0
        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();
            }
        }
コード例 #3
0
        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();
            }
        }