AnalysisWarning.BackgroundException 属性

在墨迹后台分析过程中发生异常时将会引发的 Exception

命名空间:  System.Windows.Ink
程序集:  IAWinFX(在 IAWinFX.dll 中)

语法

声明
Public ReadOnly Property BackgroundException As Exception
用法
Dim instance As AnalysisWarning
Dim value As Exception

value = instance.BackgroundException
public Exception BackgroundException { get; }
public:
property Exception^ BackgroundException {
    Exception^ get ();
}
/** @property */
public Exception get_BackgroundException()
public function get BackgroundException () : Exception

属性值

类型:System.Exception
在后台分析过程中引发的 Exception

备注

如果在调用 InkAnalyzerBaseBackgroundAnalyze() 之后发生 Exception,则无法引发该异常,因为该异常是在另一个线程中发生的,无法将其捕获。而在 Results() 事件处理程序中,ResultsUpdatedEventArgs 对象的 Status() 属性的 Warnings 集合中将有一个 BackgroundException 类型的 AnalysisWarning 对象。此 AnalysisWarning 对象的 BackgroundException 属性将包含在后台分析过程中引发的 Exception。通常,需要重新引发此 Exception,以便在应用程序的其他位置将其捕获。

示例

下面的示例检查名为 warning 的 AnalysisWarning 是否与任何提示相关联。如果 AnalysisWarning 的类型为 BackgroundException,则应尝试保存尽可能多的文档状态,然后重新引发该异常,以便异常处理程序捕获该异常。即使没有适当的异常处理程序,也可以调用程序错误调试器(例如 Dr. Watson)。InkAnalyzer 在捕获异常后需要重新初始化。

' Loop through warnings
Dim warning As AnalysisWarning
For Each warning In  status.Warnings
    Select Case warning.WarningCode
        Case AnalysisWarningCode.Aborted
            message &= "Analysis operation was aborted. "
        Case AnalysisWarningCode.BackgroundException
                ' This is a fatal warning. Throw an exception.
                ' First, attempt to save as much doc state as possible 
                ' ...
                ' Rethrow the exception so that it can be caught by an exception
                ' handler (or if there is no exception handler, a program error 
                ' debugger such as Dr. Watson can be invoked)
                Throw warning.BackgroundException
        Case AnalysisWarningCode.ConfirmedWithoutInkRecognition
            message &= "Node was confirmed without ink recognition having been performed. "
        Case AnalysisWarningCode.ContextNodeLocationNotSet
            message &= "Node does not have a proper location set. "
        Case AnalysisWarningCode.FactoidCoercionNotSupported
            message &= "Factoid coercion failed "
            If Not (warning.AnalysisHint Is Nothing) AndAlso _
               Not (warning.AnalysisHint.Factoid Is Nothing) Then
                message &= "for factoid: " & warning.AnalysisHint.Factoid & ". "
            End If
        Case AnalysisWarningCode.FactoidNotSupported
            If Not (warning.AnalysisHint Is Nothing) AndAlso _
               Not (warning.AnalysisHint.Factoid Is Nothing) Then
                message &= warning.AnalysisHint.Factoid & " factoid was not respected. "
            End If
        Case AnalysisWarningCode.GuideNotSupported
            message &= "Guide was not respected. "
        Case AnalysisWarningCode.AddInkToRecognizerFailed
            message &= "Ink could not be added to the InkRecognizer. "
        Case AnalysisWarningCode.InkRecognizerInitializationFailed
            message &= "The InkRecognizer failed to initialize. "
        Case AnalysisWarningCode.NoMatchingInkRecognizerFound
            message &= "There are no ink recognizers meeting the language or capabilities needed. "
        Case AnalysisWarningCode.LanguageIdNotRespected
            message &= "The language ID set on a stroke did not match the language ID of the InkRecognizer. "
        Case AnalysisWarningCode.PartialDictionaryTermsNotSupported
            message &= "Partial dictionary terms could not be returned from the text recognizer. "
        Case AnalysisWarningCode.TextRecognitionProcessFailed
            message &= "The text recognition process failed. "
        Case AnalysisWarningCode.SetPrefixSuffixFailed
            message &= "The text recognizer was unable to respect either the prefix or suffix. "
            If Not (warning.AnalysisHint Is Nothing) AndAlso _
               Not (warning.AnalysisHint.PrefixText Is Nothing) Then
                message &= "Prefix: " & warning.AnalysisHint.PrefixText & ". "
            End If
            If Not (warning.AnalysisHint Is Nothing) AndAlso _
               Not (warning.AnalysisHint.SuffixText Is Nothing) Then
                message &= "Suffix: " & warning.AnalysisHint.SuffixText & ". "
            End If
        Case AnalysisWarningCode.WordlistNotSupported
            message &= "Wordlist was not respected. "
        Case AnalysisWarningCode.WordModeNotSupported
            message &= "Word mode was not respected. "
    End Select

    ' Add node id information
    Dim id As Guid
    For Each id In  warning.GetNodeIds()
        message &= "Id: " & id.ToString() & " "
    Next id
    ' Add hint information
    If Not (warning.AnalysisHint Is Nothing) Then
        Dim hint As AnalysisHintNode = warning.AnalysisHint
        message &= Environment.NewLine & "Hint information: "
        message &= "AllowPartialDictionaryTerms"
        If hint.AllowPartialDictionaryTerms Then
            message &= " = true "
        Else
            message &= " = false "
        End If
        message &= "CoerceToFactoid"
        If hint.CoerceToFactoid Then
            message &= " = true "
        Else
            message &= " = false "
        End If
        If Not (hint.Factoid Is Nothing) Then
            message &= "Factoid = " & warning.AnalysisHint.Factoid & " "
        End If
        message &= "Guide Drawn Box = (" _
                & hint.Guide.DrawnBoxTop.ToString() & ", " _
                & hint.Guide.DrawnBoxLeft.ToString() & ", " _
                & hint.Guide.DrawnBoxBottom.ToString() & ", " _
                & hint.Guide.DrawnBoxRight.ToString() & ", " & ")"
        message &= "Guide Writing Box = (" _
                & hint.Guide.WritingBoxTop.ToString() & ", " _
                & hint.Guide.WritingBoxLeft.ToString() & ", " _
                & hint.Guide.WritingBoxBottom.ToString() & ", " _
                & hint.Guide.WritingBoxRight.ToString() & ", " & ")"
        If Not (hint.Name Is Nothing) Then
            message &= "Name = " & warning.AnalysisHint.Name & " "
        End If
        If Not (hint.PrefixText Is Nothing) Then
            message &= "PrefixText = " & warning.AnalysisHint.PrefixText & " "
        End If
        If Not (hint.SuffixText Is Nothing) Then
            message &= "SuffixText = " & warning.AnalysisHint.SuffixText & " "
        End If
        message &= "WordMode"
        If hint.WordMode Then
            message &= " = true"
        Else
            message &= " = false"
        End If
    End If
    message &= Environment.NewLine
Next warning
// Loop through warnings
foreach (AnalysisWarning warning in status.Warnings)
{
    switch (warning.WarningCode)
    {
        case AnalysisWarningCode.Aborted:
            message += "Analysis operation was aborted. ";
            break;
        case AnalysisWarningCode.BackgroundException:
            // This is a fatal warning. Throw an exception.
            // First, attempt to save as much doc state as possible 
            // ...

            // Rethrow the exception so that it can be caught by an exception
            // handler (or if there is no exception handler, a program error 
            // debugger such as Dr. Watson can be invoked)
            throw (warning.BackgroundException);
        case AnalysisWarningCode.ConfirmedWithoutInkRecognition:
            message += "Node was confirmed without ink recognition having been performed. ";
            break;
        case AnalysisWarningCode.ContextNodeLocationNotSet:
            message += "Node does not have a proper location set. ";
            break;
        case AnalysisWarningCode.FactoidCoercionNotSupported:
            message += "Factoid coercion failed ";
            if (warning.AnalysisHint != null && warning.AnalysisHint.Factoid != null)
            {
                message += "for factoid: " + warning.AnalysisHint.Factoid + ". ";
            }
            break;
        case AnalysisWarningCode.FactoidNotSupported:
            if (warning.AnalysisHint != null && warning.AnalysisHint.Factoid != null)
            {
                message += warning.AnalysisHint.Factoid + " factoid was not respected. ";
            }
            break;
        case AnalysisWarningCode.GuideNotSupported:
            message += "Guide was not respected. ";
            break;
        case AnalysisWarningCode.AddInkToRecognizerFailed:
            message += "Ink could not be added to the InkRecognizer. ";
            break;
        case AnalysisWarningCode.InkRecognizerInitializationFailed:
            message += "The InkRecognizer failed to initialize. ";
            break;
        case AnalysisWarningCode.NoMatchingInkRecognizerFound:
            message += "There are no ink recognizers meeting the language or capabilities needed. ";
            break;
        case AnalysisWarningCode.LanguageIdNotRespected:
            message += "The language ID set on a stroke did not match the language ID of the InkRecognizer. ";
            break;
        case AnalysisWarningCode.PartialDictionaryTermsNotSupported:
            message += "Partial dictionary terms could not be returned from the text recognizer. ";
            break;
        case AnalysisWarningCode.TextRecognitionProcessFailed:
            message += "The text recognition process failed. ";
            break;
        case AnalysisWarningCode.SetPrefixSuffixFailed:
            message += "The text recognizer was unable to respect either the prefix or suffix. ";
            if (warning.AnalysisHint != null && warning.AnalysisHint.PrefixText != null)
            {
                message += "Prefix: " + warning.AnalysisHint.PrefixText + ". ";
            }
            if (warning.AnalysisHint != null && warning.AnalysisHint.SuffixText != null)
            {
                message += "Suffix: " + warning.AnalysisHint.SuffixText + ". ";
            }
            break;
        case AnalysisWarningCode.WordlistNotSupported:
            message += "Wordlist was not respected. ";
            break;
        case AnalysisWarningCode.WordModeNotSupported:
            message += "Word mode was not respected. ";
            break;
    }

    // Add node id information
    foreach (Guid id in warning.GetNodeIds())
        message += "Id: " + id.ToString() + " ";

    // Add hint information
    if (warning.AnalysisHint != null)
    {
        AnalysisHintNode hint = warning.AnalysisHint;
        message += Environment.NewLine + "Hint information: ";
        message += "AllowPartialDictionaryTerms";
        if (hint.AllowPartialDictionaryTerms)
            message += " = true ";
        else
            message += " = false ";
        message += "CoerceToFactoid";
        if (hint.CoerceToFactoid)
            message += " = true ";
        else
            message += " = false ";
        if (hint.Factoid != null)
            message += "Factoid = " + warning.AnalysisHint.Factoid + " ";
        message += "Guide Drawn Box = (" +
            hint.Guide.DrawnBoxTop.ToString() + ", " +
            hint.Guide.DrawnBoxLeft.ToString() + ", " +
            hint.Guide.DrawnBoxBottom.ToString() + ", " +
            hint.Guide.DrawnBoxRight.ToString() + ", " + ")";
        message += "Guide Writing Box = (" +
            hint.Guide.WritingBoxTop.ToString() + ", " +
            hint.Guide.WritingBoxLeft.ToString() + ", " +
            hint.Guide.WritingBoxBottom.ToString() + ", " +
            hint.Guide.WritingBoxRight.ToString() + ", " + ")";
        if (hint.Name != null)
            message += "Name = " + warning.AnalysisHint.Name + " ";
        if (hint.PrefixText != null)
            message += "PrefixText = " + warning.AnalysisHint.PrefixText + " ";
        if (hint.SuffixText != null)
            message += "SuffixText = " + warning.AnalysisHint.SuffixText + " ";
        message += "WordMode";
        if (hint.WordMode)
            message += " = true";
        else
            message += " = false";
    }
    message += Environment.NewLine;
}

平台

Windows Vista

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求

版本信息

.NET Framework

受以下版本支持:3.0

另请参见

参考

AnalysisWarning 类

AnalysisWarning 成员

System.Windows.Ink 命名空间

InkAnalyzerBaseBackgroundAnalyze()