ParseResultHandler Delegar
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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.