【问题标题】:Checking for file conflicts using the sync framework使用同步框架检查文件冲突
【发布时间】:2013-11-17 16:40:18
【问题描述】:

我一直在尝试使用 Microsoft Sync 框架构建一种更新机制,该框架将检查一个文件夹 (A) 中的更改并在另一个文件夹 (B) 上进行更新。我有一个问题,我的同步总是覆盖另一个文件夹 (B) 上的文件。当我将 ConflictResolutionPolicy 设置为 source wins 或 merge 时会发生这种情况。我希望用户能够说是覆盖或不跳过。可能就像我们在复制文件以及同名文件之间存在冲突时出现的windows对话框一样。如果有人可以帮助我,或者在文件之间存在冲突时给我一些关于如何获得此对话框功能的文档,我将不胜感激。

这就是我现在所做的,但我无法让它做任何事情。有些文件具有相同的名称但时间戳不同,它们必须触发冲突,但不幸的是在我的情况下不会。

    private void OnItemConflicting(object sender, ItemConflictingEventArgs args)
    {
        args.SetResolutionAction(ConflictResolutionAction.SaveConflict);
        Console.WriteLine(" Conflict detected for item " + args.DestinationChange.ItemId.ToString());
    }

    private void OnItemConstraint(object sender, ItemConstraintEventArgs args)
    {
        args.SetResolutionAction(ConstraintConflictResolutionAction.RenameDestination);
        ConstraintConflictResolutionAction.RenameDestination.ToString();
        Console.WriteLine(" Constraint conflict detected" + args.DestinationChange.ItemId.ToString());
    }

【问题讨论】:

    标签: c# microsoft-sync-framework


    【解决方案1】:

    如果您将冲突解决设置为源获胜,那么它当然会覆盖目标。

    显示对话框已经超出了框架的范围。

    您可以在发生冲突时处理事件,也可以在同步之前预览更改。您可以显示或提示用户选择解决冲突的选项

    这两种情况都包含在随 SDK 一起安装的文档中

    【讨论】:

    • 是的,你是对的。如果 ConflictresolutionAction 设置为 source win 它会覆盖,但如果 ConflictresolutionAction 设置为 SaveConflict 它似乎什么也不做或触发任何事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多