AnalysisWarning.BackgroundException 속성
업데이트: 2007년 11월
백그라운드 잉크 분석 도중 예외가 발생한 경우 throw되는 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
백그라운드 분석 도중 throw된 Exception입니다.
설명
InkAnalyzerBaseBackgroundAnalyze() 호출 후 Exception이 발생하면 예외가 다른 스레드에서 발생한 것이므로 예외를 throw할 수 없으며 따라서 이를 catch할 수 없습니다. 대신 Results() 이벤트 처리기에서 ResultsUpdatedEventArgs 개체의 Status() 속성에는 BackgroundException 형식의 AnalysisWarning 개체가 해당 Warnings 컬렉션에 있습니다. 이 AnalysisWarning 개체의 BackgroundException 속성에는 백그라운드 분석 도중 throw된 Exception이 들어 있습니다. 일반적으로 사용자는 이 Exception을 다시 throw하여 응용 프로그램의 다른 위치에서 catch되도록 할 수 있습니다.
예제
다음 예제에서는 이름이 warning인 AnalysisWarning을 검사하여 힌트와 연결되었는지 확인합니다. AnalysisWarning이 BackgroundException 형식인 경우 가능한 많은 문서 상태를 저장하고 예외를 다시 throw하여 예외 처리기에서 catch되도록 해야 합니다. 예외 처리기가 없는 경우 Dr. Watson 등의 프로그램 오류 디버거를 호출할 수 있습니다. 예외를 catch한 후에는 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에서 지원
참고 항목
참조
InkAnalyzerBaseBackgroundAnalyze()