c# - FileSystemWatcher - 如何使用它?
问题描述
大家,早安,
我有一个关于 FileSystemWatcher 的问题 - 我希望当文本文件 H1.txt 更改里面的值时,我的 ASP.NET webForm 中的标签会刷新。我做错了什么?
TextReader tr = new StreamReader(@"C:\Help\H1.txt");
Label1.Text = tr.ReadLine() + " °C";
Label1.Text += tr.ReadToEnd();
tr.Close();
FileSystemWatcher fwatcher = new FileSystemWatcher();
fwatcher.Path = Path.GetDirectoryName(@"C:\Help\H1.txt");
fwatcher.Filter = Path.GetFileName(@"C:\Help\H1.txt");
//types of events to watch
fwatcher.NotifyFilter = NotifyFilters.LastWrite;
fwatcher.EnableRaisingEvents = true;
fwatcher.Changed += Changed;
}
public void Changed(Object sender, FileSystemEventArgs e)
{
TextReader tr = new StreamReader(@"C:\Help\H1.txt");
Label1.Text = tr.ReadLine() + " °C";
Label1.Text += tr.ReadToEnd();
tr.Close();
}
解决方案
我建议使用SignalR,
protected void OnChanged(object sender, FileSystemEventArgs e)
{
if (e.ChangeType != WatcherChangeTypes.Changed)
{
return;
};
try
{
using (TextReader tr = new StreamReader(e.FullPath))
{
var text = tr.ReadLine() + " °C";
var context = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();
context.Clients.All.broadcastMessage("server", text);
}
}
catch
{
// ignore any error
}
}
推荐阅读
- ruby-on-rails - Rails - 使用 ActionCable 时服务器请求被阻止
- vue.js -
其他内部的组件 s(相同的组件) - angular - ngAfterViewInit 调用太早
- python - 在python中,当我们为变量分配新值时,旧值会发生什么?
- ef-code-first - EF Core - 从特定列计数
- matplotlib - 与 twinx 交互图例 - matplotlib
- c++ - 如何在 OpenCL 中将小写字母转换为大写字母或反之亦然
- django - 是否可以在没有 REST API 的情况下制作 React 应用程序(也在 React 应用程序中编写后端)
- flutter - 如何在 Flutter 类中预定义属性
- angular - 在多个开发环境中匹配 ChromeDriver 版本和 Chrome 浏览器版本