public override void Start() { if( 1 == Interlocked.Exchange(ref _is_started, 1) ) { throw new Exception("Can only call FunctionEdgeListener.Start() once!"); } lock( _listener_map ) { _listener_map[ _listener_id ] = this; } _queue_thread.Start(); }