Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.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# 如何检查文件是否被第三方应用程序修改?I';我在寻找小代码示例_C#_.net_Windows_File - Fatal编程技术网

C# 如何检查文件是否被第三方应用程序修改?I';我在寻找小代码示例

C# 如何检查文件是否被第三方应用程序修改?I';我在寻找小代码示例,c#,.net,windows,file,C#,.net,Windows,File,使用C#我可以检查文件是否被某个程序使用某种 DateTime dt=File.GetLastWriteTime(文件名)我只是先存储这个时间,然后每隔几秒钟与timer.appeased+=OnTimedEvent比较一次 我想知道是否还有其他解决方案?某种类型的事件处理程序,是否可以“侦听”指定的文件并相应地在c#中运行某些代码?在检测到文件系统的更改时会引发事件 在您的情况下,听起来好像您想要订阅更改的事件,使用LastWrite的NotifyFilter,您可以使用File来定义文件更改

使用C#我可以检查文件是否被某个程序使用某种
DateTime dt=File.GetLastWriteTime(文件名)我只是先存储这个时间,然后每隔几秒钟与
timer.appeased+=OnTimedEvent比较一次

我想知道是否还有其他解决方案?某种类型的事件处理程序,是否可以“侦听”指定的文件并相应地在c#中运行某些代码?

在检测到文件系统的更改时会引发事件


在您的情况下,听起来好像您想要订阅
更改的
事件,使用
LastWrite的
NotifyFilter
您可以使用File来定义文件更改事件​系统​观察者。​从System.IO更改为在修改时触发任何代码,因此您不必轮询它。

下面的代码只处理指定文件夹中txt文件的更改,但这就是我所需要的。使用csc.exe编译,此代码有效。谢谢你们给我一个线索

using System;
using System.IO;
using System.Security.Permissions;

public class Watcher
{
    public static void Main()
    {
    Run();
    }

    [PermissionSet(SecurityAction.Demand, Name="FullTrust")]
    public static void Run()
    {
        FileSystemWatcher watcher = new FileSystemWatcher();
        watcher.Path = @"C:\somePath"; // set correct path
        watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
           | NotifyFilters.FileName | NotifyFilters.DirectoryName;
        watcher.Filter = "*.txt";  // watch for txt only
        watcher.Changed += new FileSystemEventHandler(OnChanged);
        watcher.EnableRaisingEvents = true;
        while(Console.ReadLine()==null); // wait for keypress
    }
    private static void OnChanged(object source, FileSystemEventArgs e)
    {
       Console.WriteLine("File: " +  e.FullPath + " " + e.ChangeType);
    }
}

请拿一个战利品,看看这是否对你有帮助。是的!它对我的小任务非常有效。谢谢