RecognizerContext.BackgroundRecognize-Methode (Object)
Bewirkt, dass das Recognizer-Objekt die zugeordnete Strokes-Auflistung erkennt und bei Abschluss der Erkennung ein Recognition-Ereignis mit zugeordneten Anwendungsdaten auslöst.
Namespace: Microsoft.Ink
Assembly: Microsoft.Ink (in Microsoft.Ink.dll)
Syntax
'Declaration
Public Sub BackgroundRecognize ( _
customData As Object _
)
'Usage
Dim instance As RecognizerContext
Dim customData As Object
instance.BackgroundRecognize(customData)
public void BackgroundRecognize(
Object customData
)
public:
void BackgroundRecognize(
Object^ customData
)
public void BackgroundRecognize(
Object customData
)
public function BackgroundRecognize(
customData : Object
)
Parameter
- customData
Typ: System.Object
Alle anwendungsdefinierten Daten, die der Anwendung im Recognition-Ereignis zur Verfügung stehen. Der Standardwert ist NULL (Nothing in Microsoft® Visual Basic® .NET).
Hinweise
Diese Methode gibt an, dass die Freihanderkennung asynchron ausgeführt wird. Um die Freihanderkennung synchron ausführen zu lassen, rufen Sie die RecognizerContext.Recognize-Methode auf.
Diese Methode erkennt nur die Zeichenfolge mit dem besten Ergebnis. Diese Methode erstellt keine RecognitionAlternate-Objekte. Um eine Erkennung auszuführen, die eine Liste verfügbarer Alternativen erstellt, rufen Sie die BackgroundRecognizeWithAlternates-Methode auf.
Das Recognition-Ereignis wird nicht ausgelöst, wenn das Erkennungsmodul nichts erkennt.
Beispiele
In diesem Beispiel wird jeder in einem InkOverlay-Objekt ausgeführte Strich automatisch erkannt, und das Erkennungsergebnis wird angezeigt.
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, wobei die aktuelle Zeit an den customData-Parameter übergeben wird.
Private Sub mInkOverlay_Stroke4(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(DateTime.Now)
End Sub
private void mInkOverlay_Stroke4(object sender, InkCollectorStrokeEventArgs e)
{
// in case background recognition is still occurring, stop it
mRecognizerContext.StopBackgroundRecognition();
// add the stroke, and start recognition, passing current time
mRecognizerContext.Strokes.Add(e.Stroke);
mRecognizerContext.BackgroundRecognize(DateTime.Now);
}
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. Darüber hinaus wird die Uhrzeit, zu der die Erkennung begonnen hat, aus der CustomData-Eigenschaft des RecognizerContextRecognitionEventArgs-Objekts abgerufen und zur Berechnung der insgesamt für die Erkennung erforderliche Zeitspanne verwendet.
' event fires when recognition results (without alternates) are ready
Private Sub RecognizerContext_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 RecognizerContext_Recognition), _
New Object() {sender, e} _
)
Return
End If
If RecognitionStatus.NoError = e.RecognitionStatus Then
listBoxRecognitionResults.Items.Add(e.Text)
' get the custom data and calculate elapsed time
Dim startTime As DateTime = DirectCast(e.CustomData, DateTime)
Dim endTime As DateTime = DateTime.Now
Dim span As TimeSpan = New TimeSpan(endTime.Ticks - startTime.Ticks)
' display the number of seconds for this recognition to finish
listBoxRecognitionResults.Items.Add(span.TotalSeconds.ToString())
End If
End Sub
// event fires when recognition results (without alternates) are ready
private void RecognizerContext_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(RecognizerContext_Recognition),
new object[] { sender, e }
);
return;
}
if (RecognitionStatus.NoError == e.RecognitionStatus)
{
listBoxRecognitionResults.Items.Add(e.Text);
// get the custom data and calculate elapsed time
DateTime startTime = (DateTime)e.CustomData;
DateTime endTime = DateTime.Now;
TimeSpan span = new TimeSpan(endTime.Ticks - startTime.Ticks);
// display the number of seconds for this recognition to finish
listBoxRecognitionResults.Items.Add(span.TotalSeconds.ToString());
}
}
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
BackgroundRecognize-Überladung