共用方式為


RecognizerContext.BackgroundRecognizeWithAlternates 方法 (Object)

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

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

語法

'宣告
Public Sub BackgroundRecognizeWithAlternates ( _
    customData As Object _
)
'用途
Dim instance As RecognizerContext
Dim customData As Object

instance.BackgroundRecognizeWithAlternates(customData)
public void BackgroundRecognizeWithAlternates(
    Object customData
)
public:
void BackgroundRecognizeWithAlternates(
    Object^ customData
)
public void BackgroundRecognizeWithAlternates(
    Object customData
)
public function BackgroundRecognizeWithAlternates(
    customData : Object
)

參數

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

備註

這個方法會指定要非同步執行筆墨辨識。

若要執行僅包含頂端替代項目的辨識,請呼叫 BackgroundRecognize 方法。

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

範例

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

Stroke 事件引發時 (以回應完成筆劃的使用者),剛建立的筆劃會加入至 RecognizerContext 物件的 Strokes 集合中,並且會呼叫 BackgroundRecognizeWithAlternates 方法,將目前時間傳遞至 customData 參數。

Private Sub mInkOverlay_Stroke3(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.BackgroundRecognizeWithAlternates(DateTime.Now)
End Sub
private void mInkOverlay_Stroke3(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.BackgroundRecognizeWithAlternates(DateTime.Now);
}

背景辨識完成時,會引發 RecognitionWithAlternates 事件。在處理這個事件期間,辨識的結果 (包括替代項目) 會放置在清單方塊中。此外,還會從 RecognizerContextRecognitionWithAlternatesEventArgs 物件的 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 成員

BackgroundRecognizeWithAlternates 多載

Microsoft.Ink 命名空間

BackgroundRecognizeWithAlternates

RecognizerContext.BackgroundRecognize

ExtendedProperty.Data

RecognitionAlternate