Metodo RecognizerContext.BackgroundRecognize (Object)
Aggiornamento: novembre 2007
Fa in modo che l'oggetto Recognizer riconosca l'insieme Strokes associato e generi un evento Recognition, con i dati dell'applicazione associati, quando il riconoscimento è completo.
Spazio dei nomi: Microsoft.Ink
Assembly: Microsoft.Ink (in Microsoft.Ink.dll)
Sintassi
'Dichiarazione
Public Sub BackgroundRecognize ( _
customData As Object _
)
'Utilizzo
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
)
Parametri
- customData
Tipo: System.Object
Qualsiasi dato definito dall'applicazione disponibile per l'applicazione nell'evento Recognition. Il valore predefinito è null (Nothing in Microsoft® Visual Basic® .NET).
Note
Questo metodo specifica che il riconoscimento dell'input penna viene eseguito in modo asincrono. Per riconoscere l'input penna in modo sincrono, chiamare il metodo RecognizerContext.Recognize.
Questo metodo riconosce solo la stringa di risultato migliore. Questo metodo non crea oggetti RecognitionAlternate. Per eseguire il riconoscimento che crea un elenco di alternative disponibili, chiamare il metodo BackgroundRecognizeWithAlternates.
Se il sistema di riconoscimento non riconosce nessun dato, l'evento Recognition non viene generato.
Esempi
In questo esempio viene riconosciuto automaticamente ogni tratto eseguito in un oggetto InkOverlay e viene visualizzato il risultato del riconoscimento.
Quando viene generato l'evento Stroke (in risposta al completamento di un tratto da parte dell'utente), il tratto appena creato viene aggiunto all'insieme Strokes dell'oggetto RecognizerContext e viene chiamato il metodo BackgroundRecognize, che passa l'ora corrente al parametro customData.
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);
}
Al termine del riconoscimento in background, viene generato l'evento Recognition. Durante la gestione di questo evento, i risultati del riconoscimento vengono collocati in una casella di riepilogo. Inoltre, l'ora di inizio del riconoscimento viene recuperata dalla proprietà CustomData dell'oggetto RecognizerContextRecognitionEventArgs e viene utilizzata per calcolare il tempo totale trascorso necessario per il riconoscimento.
' 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());
}
}
Piattaforme
Windows Vista
.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.
Informazioni sulla versione
.NET Framework
Supportato in: 3.0