private void HandleAsyncCompletionTriggered(object sender, CompletionTriggeredEventArgs e) { var listener = _asynchronousOperationListenerProvider.GetListener(FeatureAttribute.CompletionSet); var token = listener.BeginAsyncOperation(nameof(IAsyncCompletionBroker.CompletionTriggered)); e.CompletionSession.Dismissed += ReleaseToken; e.CompletionSession.ItemCommitted += ReleaseToken; e.CompletionSession.ItemsUpdated += ReleaseToken; return; // Local function void ReleaseToken(object sender, EventArgs e) => Interlocked.Exchange(ref token, null)?.Dispose(); }
private void CompletionBroker_CompletionTriggered(object sender, CompletionTriggeredEventArgs eventArgs) { eventArgs.CompletionSession.ItemCommitted += CompletionSession_ItemCommitted; TextView = eventArgs.TextView; }