ParseResultHandler Delegar

Definição

Importante

Esta API não está em conformidade com CLS.

Usado para definir um delegado para um manipulador de conclusão de operação de análise em um serviço de linguagem.

public delegate void ParseResultHandler(ParseRequest ^ request);
[System.CLSCompliant(false)]
public delegate void ParseResultHandler(ParseRequest request);
[<System.CLSCompliant(false)>]
type ParseResultHandler = delegate of ParseRequest -> unit
Public Delegate Sub ParseResultHandler(request As ParseRequest)

Parâmetros

request
ParseRequest

no Um ParseRequest objeto que descreve o que a operação de análise fez.

Atributos

Exemplos

Aqui está um exemplo de como esse delegado é usado. Esse código é baseado no código na Source classe que manipula uma análise para uma operação de conclusão.

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

Comentários

Este delegado descreve um manipulador que é chamado quando uma operação de análise é concluída. O ParseRequest objeto fornece acesso aos resultados da operação de análise. Esse delegado é passado para o BeginParse método na LanguageService classe.

Aplica-se a