共用方式為


RecognizerContext.BackgroundRecognize 方法 (Object)

Recognizer 物件辨識相關聯的 Strokes 集合,並在辨識完成時,以相關聯的應用程式資料引發 Recognition 事件。

命名空間:  Microsoft.Ink
組件:  Microsoft.Ink (在 Microsoft.Ink.dll 中)

語法

'宣告
Public Sub BackgroundRecognize ( _
    customData As Object _
)
'用途
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
)

參數

  • customData
    型別:System.Object
    Recognition 事件中,應用程式可以使用的任何應用程式定義資料。預設值是 null (在 Microsoft® Visual Basic® .NET 中為 Nothing)。

備註

這個方法會指定要非同步執行筆墨辨識。若要同步辨識筆墨,請呼叫 RecognizerContext.Recognize 方法。

這個方法只能辨識最佳結果字串。這個方法並不會建立 RecognitionAlternate 物件。若要執行會建立可用替代項目清單的辨識,請呼叫 BackgroundRecognizeWithAlternates 方法。

如果辨識器不會辨識任何項目,則不會引發 Recognition 事件。

範例

在這個範例中,會自動辨識 InkOverlay 物件中所建立的每個筆劃,並顯示辨識結果。

Stroke 事件引發時 (以回應完成筆劃的使用者),剛建立的筆劃會加入至 RecognizerContext 物件的 Strokes 集合中,並且會呼叫 BackgroundRecognize 方法,將目前時間傳遞至 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);
}

背景辨識完成時,會引發 Recognition 事件。在處理這個事件期間,辨識的結果會放置在清單方塊中。此外,還會從 RecognizerContextRecognitionEventArgs 物件的 CustomData 屬性擷取開始辨識的時間,用來計算辨識所需的耗用總時間。

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

平台

Windows Vista

.NET Framework 和 .NET Compact Framework 並不支援各種平台的所有版本。如需支援平台版本的相關資訊,請參閱 .NET Framework 系統需求

版本資訊

.NET Framework

支援版本:3.0

請參閱

參考

RecognizerContext 類別

RecognizerContext 成員

BackgroundRecognize 多載

Microsoft.Ink 命名空間

RecognizerContext.BackgroundRecognizeWithAlternates

ExtendedProperty.Data

RecognitionAlternate