Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用同步框架检查文件冲突_C#_Microsoft Sync Framework - Fatal编程技术网

C# 使用同步框架检查文件冲突

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

我一直在尝试使用MicrosoftSync框架构建一种更新机制,它将检查一个文件夹(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());
    }

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

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

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


随SDK一起安装的文档中介绍了这两种情况

是的,您是对的。如果ConflictresolutionAction设置为source win,则会覆盖它,但如果ConflictresolutionAction设置为SaveConflict,则它似乎不会执行任何操作或触发任何操作。