InkAnalyzer.Reconcile 方法

执行 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()

备注

默认情况下,协调在即将引发 IntermediateResultsUpdatedResultsUpdated 事件时自动发生。不过,通过设置相应的 AnalysisModes 禁用 AutomaticReconciliationEnabled,用户可以根据需要控制协调发生的时间。一旦禁用,用户就需要注册 ReadyToReconcile 事件。引发 ReadyToReconcile 事件时,用户必须调用此协调方法或事务性协调方法(在 ReadyToReconcile 事件的处理程序内部或外部调用均可),分析操作才能完成或继续进行。

此协调方法用于确定当分析操作在后台执行时更改了分析结果的哪些部分。由于分析操作在后台线程发生,ContextNode 可能已经发生更改(笔画删除、笔画移动等),因而导致后台计算的结果失效。协调只是标识应用程序和分析操作都已更新的上下文节点(称为“冲突”)。应用程序对 RootNode 属性所引用的 ContextNodeCollection 所做的更改将保留,不会将冲突的分析结果更新到该集合。冲突的区域将自动添加到 DirtyRegion 属性以确保这些区域在下次运行时得以分析。

仅当 BackgroundAnalyze 方法用于调用分析操作时才引发该事件。

多次调用协调的这一重载不会引发任何异常,但将无提示失败。

在事务协调(有时间限制)之后调用协调的这一重载将从更改列表中上一个事务结束的点继续,并运行至整个更改列表执行完成。

示例

下面的示例定义 theInkAnalyzerBase_ReadyToReconcile 方法,该方法处理 InkAnalyzerReadyToReconcile 事件。如果设置了布尔值 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 命名空间