Partager via


ParseResultHandler, délégué

Utilisé pour définir un délégué pour un gestionnaire d'achèvement d'opération d'analyse dans un service de langage.

Cette API n'est pas conforme CLS. L'alternative conforme CLS est [None].

Espace de noms :  Microsoft.VisualStudio.Package
Assemblys :   Microsoft.VisualStudio.Package.LanguageService.11.0 (dans Microsoft.VisualStudio.Package.LanguageService.11.0.dll)
  Microsoft.VisualStudio.Package.LanguageService.10.0 (dans Microsoft.VisualStudio.Package.LanguageService.10.0.dll)
  Microsoft.VisualStudio.Package.LanguageService.9.0 (dans Microsoft.VisualStudio.Package.LanguageService.9.0.dll)
  Microsoft.VisualStudio.Package.LanguageService (dans Microsoft.VisualStudio.Package.LanguageService.dll)

Syntaxe

'Déclaration
<CLSCompliantAttribute(False)> _
Public Delegate Sub ParseResultHandler ( _
    request As ParseRequest _
)
[CLSCompliantAttribute(false)]
public delegate void ParseResultHandler(
    ParseRequest request
)

Paramètres

Remarques

Ce délégué décrit un gestionnaire qui est appelé lorsqu'une opération d'analyse est terminée.L'objet d'ParseRequest permet d'accéder aux résultats de l'opération d'analyse.Ce délégué est passé à la méthode d'BeginParse dans la classe d'LanguageService.

Exemples

Voici un exemple de la façon dont ce délégué est utilisé.Ce code est selon code dans la classe d'Source qui gère un analyser pour une opération d'achèvement.

namespace Microsoft.VisualStudio.Package
{
    [CLSCompliant(false)]
    public class Source :
        IDisposable,
        IVsTextLinesEvents,
        IVsFinalTextChangeCommitEvents,
        IVsHiddenTextClient
    {
        private LanguageService service;
        private CompletionSet completionSet;

        public virtual void Completion(IVsTextView textView,
                                       TokenInfo info,
                                       ParseReason reason)
        {
            int line;
            int idx;

            int hr = textView.GetCaretPos(out line, out idx));
            if (hr == VSConstants.S_OK)
            {
                bool synchronous = (reason == ParseReason.CompleteWord ||
                                    reason == ParseReason.DisplayMemberList);
                this.BeginParse(line,
                                idx,
                                info,
                                reason,
                                textView,
                                new ParseResultHandler(this.HandleCompletionResponse),
                                synchronous);
            }
        }

        internal void HandleCompletionResponse(ParseRequest req)
        {
            try
            {
                if (this.service == null || req.Scope == null || this.completionSet == null)
                    return;

                ParseReason reason = req.Reason;
                Declarations decls = req.Scope.GetDeclarations(req.View,
                          req.Line,
                          req.Col,
                          req.TokenInfo,
                          reason);
                bool completeWord = (reason == ParseReason.CompleteWord);
                if ( decls.GetCount() > 0 &&
                    (this.service.Preferences.AutoListMembers || completeWord))
                {
                    this.completionSet.Init(req.View, decls, completeWord);
                }
            } catch (Exception e) {
            }
        }
    }
}

Voir aussi

Référence

Microsoft.VisualStudio.Package, espace de noms