javascript - 当目录(FileWatcher)发生变化时如何输出警报消息?
问题描述
我制作了一个 FileWatcher 来控制特定(路径)目录中是否发生了某些事情。现在,如果发生某些事情,我想在 JavaScript 文件中输出带有创建或重命名的文件名的警报消息。但我不知道如何解决这个问题。
我如何必须使用 HomeController 中的方法来获取 JavaScript 中的文件名?还是我必须做一个新的方法?
//FileWatcher.cs
public class FileWatcherService
{
public event EventHandler<string> FileCreated;
public event EventHandler<string> FileDeleted;
public event EventHandler<RenamedEventArgs> FileRenamed;
public FileWatcherService()
{
FileSystemWatcher fileWatcher = new FileSystemWatcher();
string path = @"C:\Users\Kopuz\Desktop\Log-Dateien\";
fileWatcher.Path = path;
fileWatcher.NotifyFilter = NotifyFilters.LastAccess
| NotifyFilters.LastWrite
| NotifyFilters.FileName
| NotifyFilters.DirectoryName
| NotifyFilters.CreationTime;
fileWatcher.Deleted += OnDeleted;
fileWatcher.Created += OnCreated;
fileWatcher.Renamed += OnRenamed;
fileWatcher.EnableRaisingEvents = true;
}
private void OnCreated(object sender, FileSystemEventArgs e)
{
Console.WriteLine($"File: {e.Name} created on {e.FullPath}");
FileCreated.Invoke(this, e.FullPath);
}
private void OnDeleted(object sender, FileSystemEventArgs e)
{
Console.WriteLine($"File: {e.Name} deleted from {e.FullPath}");
FileDeleted?.Invoke(this, e.FullPath);
}
private void OnRenamed(object sender, RenamedEventArgs e)
{
Console.WriteLine($"File: {e.OldName} renamed to {e.Name}");
FileRenamed?.Invoke(this, e);
}
}
//HomeController.cs
public HomeController(PerformanceAnalyseToolContext db, FileWatcherService fws)
{
this.db = db;
fws.FileRenamed += FileWatcherService_FileRenamed;
fws.FileCreated += FileWatcherService_FileCreated;
fws.FileDeleted += FileWatcherService_FileDeleted;
}
private void FileWatcherService_FileDeleted(object sender, string fullPath)
{
Console.WriteLine($"HomeController::File deleted: {fullPath}");
}
private void FileWatcherService_FileCreated(object sender, string fullPath)
{
Console.WriteLine($"HomeController::File created: {fullPath}");
string fileName = new FileInfo(fullPath).Name;
Console.WriteLine(fileName);
}
private void FileWatcherService_FileRenamed(object sender, RenamedEventArgs e)
{
Console.WriteLine($"HomeController::File renamed: {e.OldFullPath} --> {e.FullPath}");
string fileName = new FileInfo(e.FullPath).Name;
Console.WriteLine(fileName);
}
解决方案
您必须进行任何一项民意调查,这通常是不受欢迎的。
或用于始终连接推送的此类双向通信的 websocket 类型交易。 https://blog.stanko.io/do-you-really-need-websockets-343aed40aa9b
实时推送更新是 websocket 的用途。
推荐阅读
- powershell - 使用 PowerShell 模块使用 DynamicMembership 创建 Teams-room
- python - 使用 Python 时 Visual Studio 中的这些红色方块是什么?
- open-policy-agent - OPA - http.send 方法抛出间歇性 403
- c# - 如何从 Default.aspx 文件中的 DB 获取字符串?
- c# - 使用实体框架从两个表中绑定数据网格视图
- tsql - TSQL 动态查询成视图
- clojure - Clojure partition-by:将一些元素分组,其他元素保持原样
- python - 动态熊猫数据框过滤器不起作用
- java - 程序抛出异常(HTTP 状态 500 - java.lang.NoClassDefFoundError: javax/servlet/jsp/tagext/Tag)。如何解决?
- sql - 春季如何从枚举字段中进行选择