我们通过修改数据缓存文件(.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();
}
}
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;
这些行为将会一一为你展示。