Share via


AnalysisWarning.BackgroundException Property

The Exception that is thrown if an exception occurs in during background analysis of ink.

Namespace:  System.Windows.Ink
Assembly:  IAWinFX (in IAWinFX.dll)

Syntax

'Declaration
Public ReadOnly Property BackgroundException As Exception
'Usage
Dim instance As AnalysisWarning 
Dim value As Exception 

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

Property Value

Type: System.Exception
The Exception that was thrown during background analysis.

Remarks

If an Exception occurs after a call to InkAnalyzerBaseBackgroundAnalyze, then the exception cannot be thrown because the exception is occurring in a different thread; therefore, there is no way to catch it. Instead, in the Results event handler, the Status property of the ResultsUpdatedEventArgs object will have an AnalysisWarning object of type BackgroundException in its Warnings collection. The BackgroundException property of this AnalysisWarning object will contain the Exception that was thrown during background analysis. In general, you will want to rethrow the Exception so that it can be caught elsewhere in your application.

Examples

The following example checks an AnalysisWarning named warning to see if it is associated with any hints. If the AnalysisWarning is of type BackgroundException, then you should attempt to save as much document state as possible, rethrowing the exception so that it can be caught by an exception handler. Even if no exception handler is in place, a program error debugger such as Dr. Watson can be invoked. The InkAnalyzer will need to be reinitialized after catching an exception.

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

Platforms

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Version Information

.NET Framework

Supported in: 3.0

See Also

Reference

AnalysisWarning Class

AnalysisWarning Members

System.Windows.Ink Namespace

InkAnalyzerBaseBackgroundAnalyze