Condividi tramite


Delegato ParseResultHandler

Utilizzato per definire un delegato per un gestore di completamento delle operazioni di analisi in un servizio di linguaggio.

Questa API non è conforme a CLS. L'alternativa conforme a CLS è [None].

Spazio dei nomi:  Microsoft.VisualStudio.Package
Assembly:   Microsoft.VisualStudio.Package.LanguageService.11.0 (in Microsoft.VisualStudio.Package.LanguageService.11.0.dll)
  Microsoft.VisualStudio.Package.LanguageService.10.0 (in Microsoft.VisualStudio.Package.LanguageService.10.0.dll)
  Microsoft.VisualStudio.Package.LanguageService.9.0 (in Microsoft.VisualStudio.Package.LanguageService.9.0.dll)
  Microsoft.VisualStudio.Package.LanguageService (in Microsoft.VisualStudio.Package.LanguageService.dll)

Sintassi

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

Parametri

Note

Questo delegato descrive un gestore che viene chiamato quando un'operazione di analisi è completa.ParseRequest l'oggetto fornisce l'accesso ai risultati dell'operazione di analisi.Questo delegato viene passato a BeginParse metodo in LanguageService classe.

Esempi

Di seguito è riportato un esempio di come questo delegato viene utilizzato.Questo codice è basato sul codice in Source classe che gestisce l'evento di traccia per un'operazione di completamento.

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) {
            }
        }
    }
}

Vedere anche

Riferimenti

Spazio dei nomi Microsoft.VisualStudio.Package