public IAsyncResult BeginMessageReceive( string endpoint, AsyncCallback callback, object state ) { SqlMessageAsyncResult result = new SqlMessageAsyncResult(callback, state ); _endpoints.AddRequest( endpoint, result ); if ( _timer == null ) _timer = new Timer( new TimerCallback( OnTimerTick ), null, 0, INTERVAL ); _endpoints.DispatchMessages( endpoint ); return result; }
public void AddRequest( string endpoint, SqlMessageAsyncResult result ) { lock ( _endpoints ) { if ( _endpoints[ endpoint ] == null ) _endpoints[ endpoint ] = new EndpointEntry( ); EndpointEntry e = ( EndpointEntry )_endpoints[ endpoint ]; e.OutstandingRequests.Enqueue( result ); } }