예제 #1
0
        public void InternalBlockUntilConnectedOrTimedOut()
        {
            long waitTimeMs = connectionTimeoutMs;

            while (!state.IsConnected() && (waitTimeMs > 0))
            {
                CountdownEvent latch       = new CountdownEvent(1);
                IWatcher       tempWatcher = new TempWatcher(latch);


                state.AddParentWatcher(tempWatcher);
                long startTimeMs = (long)TimeSpan.FromTicks(System.DateTime.Now.Ticks).TotalMilliseconds;
                try
                {
                    latch.Wait(TimeSpan.FromSeconds(1));
                }
                finally
                {
                    state.RemoveParentWatcher(tempWatcher);
                }
                long elapsed = (long)Math.Max(1, TimeSpan.FromTicks(System.DateTime.Now.Ticks).TotalMilliseconds - startTimeMs);
                waitTimeMs -= elapsed;
            }
        }
예제 #2
0
		public void InternalBlockUntilConnectedOrTimedOut() 
		{
			long            waitTimeMs = connectionTimeoutMs;
			while ( !state.IsConnected() && (waitTimeMs > 0) )
			{
				
				CountdownEvent latch = new CountdownEvent (1);
				IWatcher tempWatcher = new TempWatcher (latch);


				state.AddParentWatcher(tempWatcher);
				long        startTimeMs = (long)TimeSpan.FromTicks(System.DateTime.Now.Ticks).TotalMilliseconds;
				try
				{
					latch.Wait(TimeSpan.FromSeconds(1));
				}
				finally
				{
					state.RemoveParentWatcher(tempWatcher);
				}
				long        elapsed = (long) Math.Max(1, TimeSpan.FromTicks(System.DateTime.Now.Ticks).TotalMilliseconds - startTimeMs);
				waitTimeMs -= elapsed;
			}
		}