Partager via


RecognizerContext.BackgroundRecognize, méthode (Object)

Mise à jour : November 2007

Entraîne la reconnaissance par l'objet Recognizer de la collection Strokes associée et le déclenchement d'un événement Recognition, avec les données d'application associées, lorsque la reconnaissance est terminée.

Espace de noms :  Microsoft.Ink
Assembly :  Microsoft.Ink (dans Microsoft.Ink.dll)

Syntaxe

'Déclaration
Public Sub BackgroundRecognize ( _
    customData As Object _
)
'Utilisation
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
)

Paramètres

  • customData
    Type : System.Object
    Toutes les données définies par l'application disponibles pour l'application dans l'événement Recognition. La valeur par défaut est null (Nothing dans Microsoft® Visual Basic® .NET ).

Notes

Cette méthode spécifie que la reconnaissance de l'écriture manuscrite est effectuée de façon asynchrone. Pour reconnaître l'écriture manuscrite de façon asynchrone, appelez la méthode RecognizerContext.Recognize.

Cette méthode reconnaît uniquement la meilleure chaîne de résultat. Cette méthode ne crée pas d'objets RecognitionAlternate. Pour effectuer une reconnaissance qui crée une liste des propositions de substitution disponibles, appelez la méthode BackgroundRecognizeWithAlternates.

L'événement Recognition n'est pas déclenché si le module de reconnaissance ne reconnaît rien.

Exemples

Dans cet exemple, chaque trait dessiné dans un objet InkOverlay est reconnu automatiquement et le résultat de la reconnaissance est affiché.

Lorsque l'événement Stroke se déclenche (suite à la création d'un trait), le nouveau trait est ajouté à la collection Strokes de l'objet RecognizerContext et la méthode BackgroundRecognize est appelée (l'heure actuelle est passée au paramètre 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);
}

Lorsque la reconnaissance d'arrière-plan est terminée, l'événement Recognition se déclenche. Pendant la gestion de cet événement, les résultats de la reconnaissance sont placés dans une zone de liste. De plus, l'heure de début de la reconnaissance est extraite de la propriété CustomData de l'objet RecognizerContextRecognitionEventArgs et utilisée pour calculer le temps total écoulé requis pour la reconnaissance.

' 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());
    }
}

Plateformes

Windows Vista

Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Informations de version

.NET Framework

Pris en charge dans : 3.0

Voir aussi

Référence

RecognizerContext, classe

Membres RecognizerContext

BackgroundRecognize, surcharge

Microsoft.Ink, espace de noms

RecognizerContext.BackgroundRecognizeWithAlternates

ExtendedProperty.Data

RecognitionAlternate