Compartir a través de


RecognizerContextRecognitionEventArgs.CustomData (Propiedad)

Actualización: noviembre 2007

Obtiene el objeto que contiene los datos personalizados para el resultado del reconocimiento.

Espacio de nombres:  Microsoft.Ink
Ensamblado:  Microsoft.Ink (en Microsoft.Ink.dll)

Sintaxis

'Declaración
Public ReadOnly Property CustomData As Object
'Uso
Dim instance As RecognizerContextRecognitionEventArgs
Dim value As Object

value = instance.CustomData
public Object CustomData { get; }
public:
property Object^ CustomData {
    Object^ get ();
}
/** @property */
public Object get_CustomData()
public function get CustomData () : Object

Valor de propiedad

Tipo: System.Object
Objeto que contiene los datos personalizados para el resultado del reconocimiento.

Comentarios

Puede proporcionar datos personalizados al llamar al método BackgroundRecognizeWithAlternates del objeto RecognizerContext. Cuando el objeto RecognizerContext provoca el evento RecognitionWithAlternates, los datos personalizados están disponibles en la propiedad CustomData del objeto RecognizerContextRecognitionWithAlternatesEventArgs.

Ejemplos

En este ejemplo, cada trazo creado en un objeto InkOverlay se reconoce automáticamente y se muestra el resultado del reconocimiento.

Cuando se activa el evento Stroke (en respuesta a la finalización de un trazo por parte del usuario), el trazo recién creado se agrega a la colección Strokes del objeto RecognizerContext y se llama al método BackgroundRecognize mientras se pasa la hora actual al parámetro 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);
}

Cuando se completa el reconocimiento en segundo plano, se desencadena el evento Recognition. Durante el control de este evento, los resultados del reconocimiento se colocan en un cuadro de lista. Asimismo, la hora en que se inicia el reconocimiento se recupera de la propiedad CustomData del objeto RecognizerContextRecognitionEventArgs y se usa para calcular el tiempo total que es necesario que transcurra para el reconocimiento.

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

Plataformas

Windows Vista

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Información de versión

.NET Framework

Compatible con: 3.0

Vea también

Referencia

RecognizerContextRecognitionEventArgs (Clase)

RecognizerContextRecognitionEventArgs (Miembros)

Microsoft.Ink (Espacio de nombres)

RecognizerContext

RecognizerContext.Recognition

RecognizerContext.BackgroundRecognize