gpt4 book ai didi

c# - 用于监视文件更改的目录的 WCF 服务

转载 作者:行者123 更新时间:2023-11-30 22:15:16 26 4
gpt4 key购买 nike

我正在尝试开发概念验证 WCF Web 服务,它使用 FileSystemWatcher 类来监听目录并简单地输出更改类型和更改文件的完整路径。

我有一个示例控制台应用程序,它按预期工作,但是当我将其移植到 WCF 库中时,文件更改的事件处理程序永远不会触发。

代码:

    public void MonitorFolder()
{
System.IO.FileSystemWatcher watcher = new System.IO.FileSystemWatcher();
watcher.Path = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "folder-to-watch");
watcher.IncludeSubdirectories = false;
watcher.Changed += watcher_Changed;
watcher.Filter = "*.*";
watcher.NotifyFilter = NotifyFilters.LastAccess |
NotifyFilters.LastWrite |
NotifyFilters.FileName |
NotifyFilters.DirectoryName;
watcher.EnableRaisingEvents = true;
}

void watcher_Changed(object sender, System.IO.FileSystemEventArgs e)
{
Console.WriteLine(string.Format("Change: {0}, File: {1}", e.ChangeType, e.FullPath));
}

在调用服务的客户端类中:

    static void Main(string[] args)
{
FileListenerClient c = new FileListenerClient();
c.MonitorFolder();
c.Close();
}

知道为什么这不获取文件更改吗?

最佳答案

Environment.SpecialFolder.Desktop 表示当前用户的桌面。

如果您的服务在 LocalSystem 帐户(或类似帐户)下启动,那么它会监视自己的桌面,而不是您正在更改文件或文件夹的当前交互用户的桌面。

当然,服务帐户的桌面保持不变,因此不会触发事件。

关于c# - 用于监视文件更改的目录的 WCF 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18072140/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com