다음을 통해 공유


InkAnalyzer.Reconcile 메서드

업데이트: 2007년 11월

InkAnalyzer 조정을 수행합니다.

네임스페이스:  Microsoft.Ink
어셈블리:  Microsoft.Ink.Analysis(Microsoft.Ink.Analysis.dll)

구문

‘선언
Public Sub Reconcile
‘사용 방법
Dim instance As InkAnalyzer

instance.Reconcile()
public void Reconcile()
public:
void Reconcile()
public void Reconcile()
public function Reconcile()

설명

기본적으로 조정은 IntermediateResultsUpdated 또는 ResultsUpdated 이벤트가 발생하기 직전에 자동으로 수행됩니다. 그러나 적절한 AnalysisModes를 설정하여 AutomaticReconciliationEnabled를 비활성화하면 조정이 수행되는 시점을 제어할 수 있습니다. 자동 조정을 비활성화한 후에는 ReadyToReconcile 이벤트에 등록해야 합니다. ReadyToReconcile 이벤트가 발생할 때 사용자가 ReadyToReconcile 이벤트 처리 부분 안쪽이나 바깥쪽에서 이 조정 메서드 또는 트랜잭션 조정 메서드를 호출해야 분석 작업이 완료되거나 계속 진행됩니다.

조정 메서드는 백그라운드에서 분석 작업이 수행되는 도중 분석 결과에서 변경된 부분을 확인하는 데 사용됩니다. 분석 작업은 백그라운드 스레드에서 수행되므로 스트로크 삭제 또는 이동 등으로 인해 ContextNode가 변경되어 백그라운드에서 계산된 결과가 무효화될 수 있습니다. 조정 과정에서는 단순히 응용 프로그램과 분석 작업 모두에 의해 업데이트되어 충돌이 발생한 컨텍스트 노드를 식별합니다. RootNode 속성으로 참조되는 ContextNodeCollection에 대한 응용 프로그램 변경 내용은 그대로 유지되고 충돌하는 분석 결과는 해당 컬렉션에 업데이트되지 않습니다. 충돌 영역은 다음 번 실행에서 해당 영역을 분석하도록 DirtyRegion 속성에 자동으로 추가됩니다.

BackgroundAnalyze 메서드를 사용하여 분석 작업을 호출한 경우에만 이벤트가 발생합니다.

조정 메서드의 이 오버로드를 여러 번 호출하는 경우 예외는 발생하지 않지만 사용자 모르게 작업이 실패합니다.

제한 시간이 있는 트랜잭션 조정이 수행된 후 이 조정 메서드의 오버로드를 호출하면 변경 목록에서 마지막 트랜잭션이 끝난 지점부터 조정이 계속되어 전체 변경 목록이 처리될 때까지 실행됩니다.

예제

다음 예제에서는 InkAnalyzerReadyToReconcile 이벤트를 처리하는 theInkAnalyzerBase_ReadyToReconcile이라는 메서드를 정의합니다. 부울 값인 abortAnalysis가 설정되어 있으면 theInkAnalyzerBase_ReadyToReconcile에서 분석 작업을 중단합니다. 그렇지 않으면 수동으로 조정한 후 분석 작업을 계속합니다.

''' <summary>
''' Handles the StrokeReparentedBase event of an InkAnalyzerBase.
''' </summary>
''' <param name="sender">The source of the event.</param>
''' <param name="e">The event data.</param>
Sub theInkAnalyzer_ReadyToReconcile( _
ByVal sender As Object, _
ByVal e As EventArgs)
    ' The source is an InkAnalyzerBase.
    Dim theInkAnalyzerBase As Microsoft.Ink.InkAnalyzer = _
        DirectCast(sender, Microsoft.Ink.InkAnalyzer)

    ' Check whether or not to abort analysis before continuing.
    If Me.abortAnalysis Then
        ' Abort analysis and update the analyzer's dirty region.
        Dim unanalyzedRegion As Microsoft.Ink.AnalysisRegion = _
            theInkAnalyzerBase.Abort()
        theInkAnalyzerBase.DirtyRegion.Union(unanalyzedRegion)
    Else
        ' Manually reconcile the analysis results for this analysis phase.
        theInkAnalyzerBase.Reconcile()
    End If

End Sub 'theInkAnalyzer_ReadyToReconcile
/// <summary>
/// Handles the ReadyToReconcile event of an InkAnalyzerBase.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The event data.</param>
void theInkAnalyzer_ReadyToReconcile(object sender, EventArgs e)
{
    // The source is an InkAnalyzer.
    Microsoft.Ink.InkAnalyzer theInkAnalyzerBase =
        sender as Microsoft.Ink.InkAnalyzer;

    // Check whether or not to abort analysis before continuing.
    if (this.abortAnalysis)
    {
        // Abort analysis and update the analyzer's dirty region.
        Microsoft.Ink.AnalysisRegion unanalyzedRegion =
            theInkAnalyzerBase.Abort();
        theInkAnalyzerBase.DirtyRegion.Union(unanalyzedRegion);
    }
    else
    {
        // Manually reconcile the analysis results for this analysis phase.
        theInkAnalyzerBase.Reconcile();
    }
}

플랫폼

Windows Vista

.NET Framework 및 .NET Compact Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

3.0에서 지원

참고 항목

참조

InkAnalyzer 클래스

InkAnalyzer 멤버

Reconcile 오버로드

Microsoft.Ink 네임스페이스