技术开发 频道

处理微软MSF同步框架中的数据冲突

    我们通过修改数据缓存文件(.sync)的后端代码使用partial类将ApplyChangeFailed事件联系起来,在我们的例子代码如下:

public partial class DataConflictsDataCacheServerSyncProvider{
    partial
void OnInitialized(){
    
this.ApplyChangeFailed += new
    System.EventHandler(
    DataConflictsDataCacheServerSyncProvider_ApplyChangeFailed);}
    
void DataConflictsDataCacheServerSyncProvider_ApplyChangeFailed(object sender,
    Microsoft.Synchronization.Data.ApplyChangeFailedEventArgs e){
    ConflictResolverForm cr
= new ConflictResolverForm();cr.Text = "Server Data Conflict Detected";
    cr.ApplyChangeEventArgs
= e;
    cr.ShowDialog();
    }
    }
    
public partial class DataConflictsDataCacheClientSyncProvider{
    
void DataConflictsDataCacheClientSyncProvider_ApplyChangeFailed(
    object sender, Microsoft.Synchronization.Data.ApplyChangeFailedEventArgs e)
    {
    ConflictResolverForm cr
= new ConflictResolverForm();
    cr.Text
= "Client Data Conflict Detected";
    cr.ApplyChangeEventArgs
= e;
    cr.ShowDialog();
    }
    }

    我们还必须将下面的代码添加到客户端SyncProvider的构造器中(你可以在.designer.cs代码文件中找到它):

    this.ApplyChangeFailed +=new
    System.EventHandler

    (DataConflictsDataCacheClientSyncProvider_ApplyChangeFailed);

    在ConflictResolverForm中,我们通过设置合适的ApplyAction告诉同步框架如何解决冲突,如下:

    applyChangeEventArgs.Action =Microsoft.Synchronization.Data.ApplyAction.Continue;
    applyChangeEventArgs.Action = Microsoft.Synchronization.Data.ApplyAction.RetryApplyingRow;
    applyChangeEventArgs.Action = Microsoft.Synchronization.Data.ApplyAction.RetryWithForceWrite;

    这些行为将会一一为你展示。

0
相关文章