internal void RecordBlockingExtension(object extension)
        {
            if (extension == null)
            {
                return;
            }

            string extensionName;

            switch (extension)
            {
            case IAsyncCompletionSource source:
                extensionName = CompletionTelemetryHost.GetSourceName(source);
                break;

            case IAsyncCompletionItemManager itemManager:
                extensionName = CompletionTelemetryHost.GetItemManagerName(itemManager);
                break;

            case IAsyncCompletionCommitManager commitManager:
                extensionName = CompletionTelemetryHost.GetCommitManagerName(commitManager);
                break;

            default:
                extensionName = extension.GetType().ToString();
                break;
            }

            if (!BlockingExtensionCounter.ContainsKey(extensionName))
            {
                BlockingExtensionCounter[extensionName] = 0;
            }
            BlockingExtensionCounter[extensionName]++;
        }
示例#2
0
 internal void Save(
     IAsyncCompletionItemManager itemManager,
     ICompletionPresenterProvider presenterProvider,
     CompletionSessionState state)
 {
     ItemManagerName       = CompletionTelemetryHost.GetItemManagerName(itemManager);
     PresenterProviderName = CompletionTelemetryHost.GetPresenterProviderName(presenterProvider);
     CompletionState       = state;
     _telemetryHost.Add(this);
 }
 internal void Save(
     IAsyncCompletionItemManager itemManager,
     ICompletionPresenterProvider presenterProvider,
     CompletionSessionState state)
 {
     ItemManagerName       = CompletionTelemetryHost.GetItemManagerName(itemManager);
     PresenterProviderName = CompletionTelemetryHost.GetPresenterProviderName(presenterProvider);
     CompletionState       = state;
     if (NoChanges && BlockingComputationDuration > 0)
     {
         UserWaitedForNoChanges = true;
     }
     _telemetryHost.Add(this);
 }