FileSystemWatcher没有正确检测到更改

时间:2011-12-28 17:07:16

标签: c# .net mysql filesystemwatcher

我试图创建一个应用程序,只要向数据库添加新行,就可以弹出通知消息。我正在使用mysql并将默认引擎更改为csv引擎,以便我可以使用FileSystemWatcher来检测任何更改。每当删除一行时,filesystemwatcher就会触发,但问题是当一个新行添加到数据库时它没有触发更改事件。我还观察到当删除一行时“修改日期”正在改变但是当我添加一个新的时候排它不更新。请帮帮我。

private void button1_Click(object sender, EventArgs e)
{
    FileSystemWatcher fsw = new FileSystemWatcher();
    fsw.Path = "C:\\xampp\\mysql\\data\\doubts\\";
    fsw.EnableRaisingEvents = true;
    fsw.Changed += new FileSystemEventHandler(func);
}

private void func(Object obj,FileSystemEventArgs e) 
{
    notifyIcon1.Icon = SystemIcons.Application;
    notifyIcon1.BalloonTipText = 
        "Addition of new row to the database detected...";
    notifyIcon1.ShowBalloonTip(4000);
}

1 个答案:

答案 0 :(得分:1)

我建议您定期轮询数据库以检查更改的记录。

如果您的查询很昂贵,您可以创建一个AFTER INSERTAFTER UPDATE触发器,插入到另一个表中,然后轮询该表。

如果仍然不够,您可以这样做:从您的应用程序中,运行类似

的命令
SELECT "WaitForChanges", SLEEP(999);

创建一个触发器,通过KILL QUERY commandHow to do this from a stored procedure来杀死此选择。