Freigeben über


RecognizerContext.Recognition-Ereignis

Tritt auf, wenn das RecognizerContext-Objekt Ergebnisse der BackgroundRecognize-Methode generiert hat.

Namespace:  Microsoft.Ink
Assembly:  Microsoft.Ink (in Microsoft.Ink.dll)

Syntax

'Declaration
Public Event Recognition As RecognizerContextRecognitionEventHandler
'Usage
Dim instance As RecognizerContext
Dim handler As RecognizerContextRecognitionEventHandler

AddHandler instance.Recognition, handler
public event RecognizerContextRecognitionEventHandler Recognition
public:
 event RecognizerContextRecognitionEventHandler^ Recognition {
    void add (RecognizerContextRecognitionEventHandler^ value);
    void remove (RecognizerContextRecognitionEventHandler^ value);
}
/** @event */
public void add_Recognition (RecognizerContextRecognitionEventHandler value)
/** @event */
public void remove_Recognition (RecognizerContextRecognitionEventHandler value)
JScript unterstützt keine Ereignisse.

Hinweise

Der Ereignishandler empfängt ein Argument vom Typ RecognizerContextRecognitionEventArgs, das Daten zu diesem Ereignis enthält.

Beim Erstellen eines RecognizerContextRecognitionEventHandler-Delegaten bestimmen Sie die Methode für die Ereignisbehandlung. Um dem Ereignishandler das Ereignis zuzuordnen, fügen Sie dem Ereignis eine Instanz des Delegaten hinzu. Der Ereignishandler wird bei jedem Eintreten des Ereignisses aufgerufen, sofern der Delegat nicht entfernt wird.

Das Verhalten der API (Application Programming Interface, Anwendungsprogrammierschnittstelle) ist nicht vorhersehbar, wenn Sie versuchen, aus dem Ereignishandler für die Erkennung heraus Zugriff auf das ursprüngliche RecognizerContext-Objekt zu erhalten. Versuchen Sie nicht, diesen Vorgang auszuführen. Wenn ein Zugriff erforderlich ist, müssen Sie stattdessen ein Flag erstellen und dieses im Recognition-Ereignishandler festlegen. Anschließend können Sie dieses Flag abfragen, um zu ermitteln, wann die RecognizerContext-Eigenschaften außerhalb des Ereignishandlers geändert werden sollen.

Beispiele

In diesem Beispiel wird jeder in einem InkOverlay-Objekt ausgeführte Strich automatisch erkannt, und das Erkennungsergebnis wird angezeigt.

Während des Starts der Anwendung wird das RecognizerContext-Objekt instanziiert, und Ereignishandlers werden zugewiesen.

' create a new RecognizerContext object
' the object's Strokes property is initialized to null
mRecognizerContext = New RecognizerContext()
' assign the Strokes property by creating a fresh Strokes collection 
mRecognizerContext.Strokes = mInkOverlay.Ink.CreateStrokes()
' subscribe to the Strokes event. It is during this event
' that we can add strokes to the RecognizerContext
AddHandler mInkOverlay.Stroke, New InkCollectorStrokeEventHandler(AddressOf mInkOverlay_Stroke2)
' subscribe to the the Recognition event. 
' This event is fired when background recognition is complete, 
' and recognition results (without alternates) are available
AddHandler mRecognizerContext.Recognition, _
        New RecognizerContextRecognitionEventHandler(AddressOf mRecognizerContext_Recognition)
// create a new RecognizerContext object
// the object's Strokes property is initialized to null
mRecognizerContext = new RecognizerContext();
// assign the Strokes property by creating a fresh Strokes collection 
mRecognizerContext.Strokes = mInkOverlay.Ink.CreateStrokes();
// subscribe to the Strokes event. It is during this event
// that we can add strokes to the RecognizerContext
mInkOverlay.Stroke += new InkCollectorStrokeEventHandler(mInkOverlay_Stroke2);
// subscribe to the the Recognition event. 
// This event is fired when background recognition is complete, 
// and recognition results (without alternates) are available
mRecognizerContext.Recognition += 
    new RecognizerContextRecognitionEventHandler(mRecognizerContext_Recognition);

Beim Auslösen des Stroke-Ereignisses (in Reaktion auf das Abschließen eines Strichs durch den Benutzer) wird der Strokes-Auflistung des RecognizerContext-Objekts der neu erstellte Strich hinzugefügt, und die BackgroundRecognize-Methode wird aufgerufen.

Private Sub mInkOverlay_Stroke2(ByVal sender As Object, ByVal e As InkCollectorStrokeEventArgs)
    ' in case background recognition is still occurring, stop it
    mRecognizerContext.StopBackgroundRecognition()
    ' add the stroke, and start recognition
    mRecognizerContext.Strokes.Add(e.Stroke)
    mRecognizerContext.BackgroundRecognize()
End Sub
private void mInkOverlay_Stroke2(object sender, InkCollectorStrokeEventArgs e)
{
    // in case background recognition is still occurring, stop it
    mRecognizerContext.StopBackgroundRecognition();
    // add the stroke, and start recognition
    mRecognizerContext.Strokes.Add(e.Stroke);
    mRecognizerContext.BackgroundRecognize();
}

Wenn die Hintergrunderkennung abgeschlossen wurde, wird das Recognition-Ereignis ausgelöst. Während des Behandelns dieses Ereignisses werden die Ergebnisse der Erkennung in einem Listenfeld platziert.

' event fires when recognition results (without alternates) are ready
Private Sub mRecognizerContext_Recognition(ByVal sender As Object, _
            ByVal e As RecognizerContextRecognitionEventArgs)
    ' when updating a control, must use Invoke() since controls are
    ' not thread safe and recognition occurs on a different thread
    If Me.InvokeRequired Then
        ' recursively call this method via Invoke()
        Me.Invoke( _
            New RecognizerContextRecognitionEventHandler(AddressOf mRecognizerContext_Recognition), _
            New Object() {sender, e} _
        )
        Return
    End If
    If RecognitionStatus.NoError = e.RecognitionStatus Then
        listBoxRecognitionResults.Items.Add(e.Text)
    End If
End Sub
// event fires when recognition results (without alternates) are ready
private void mRecognizerContext_Recognition(object sender, RecognizerContextRecognitionEventArgs e)
{
    // when updating a control, must use Invoke() since controls are
    // not thread safe and recognition occurs on a different thread
    if (this.InvokeRequired)
    {
        // recursively call this method via Invoke()
        this.Invoke(
            new RecognizerContextRecognitionEventHandler(mRecognizerContext_Recognition), 
            new object[] { sender, e }
            );
        return;
    }
    if (RecognitionStatus.NoError == e.RecognitionStatus)
    {
        listBoxRecognitionResults.Items.Add(e.Text);
    }
}

Plattformen

Windows Vista

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Versionsinformationen

.NET Framework

Unterstützt in: 3.0

Siehe auch

Referenz

RecognizerContext-Klasse

RecognizerContext-Member

Microsoft.Ink-Namespace

RecognitionResult

RecognitionStatus

RecognizerContext.BackgroundRecognize

RecognizerContext.Recognize