2010-02-17 18 views
0

我知道这个代码不工作,但是描述很好什么即时通讯尝试做,我想运行代码时,如果检查当Lastwritetime更大,然后oldvalue日期。我试图提出一个事件,当一个文件更新在C#

private void timer1_Tick(object sender, EventArgs e) 
{ 
    DateTime lastWriteTime = File.GetLastWriteTime(@"C:\temp\test_folder\TestFile.txt"); 

    if (lastWriteTime.ToString() > oldValue.ToString()) 
    { 
     MessageBox.Show("Succsess"); 
    } 
    string oldValue = lastWriteTime.ToString(); 
} 

编辑: 即时不使用,因为在变化提出的多张事件的SystemfileWatcher。

回答

3

你为什么要比较字符串表示?如果oldValueDateTime为好,只是比较他们的是:

if(lastWriteTime.ToString() > oldValue) 
    // ... 

此外,确保的oldValue范围比timer1_Tick范围更大(即,确保它是一个类的成员变量)。

当然,不要重新发明轮子:FileSystemWatcher

+0

现在啊,现在就把这个旅店试图追踪错误,修复它 – Darkmage 2010-02-17 15:06:26

12

改为尝试FileSystemWatcher

,监听文件系统变化 通知,并引发事件时 目录,或目录中的文件, 变化。

+1

只是意识到,它偶尔会错过文件更新,并根据用户实际使用文件的方式发送大量噪音 - 创建/重命名/打开/关闭/重新命名/等等。 – 2010-02-17 15:00:49

+0

@NRNR:您可以关闭所有其他功能 – Ian 2010-02-17 15:02:32

+0

我已经尝试了这种方法,但即时通讯中遇到了有关更改事件的多重事件,我不知道如何解决此问题。 – Darkmage 2010-02-17 15:02:59

1

考虑FileSystemWatcher类。它工作得很好。

然而,有一点需要注意的是,在尝试监视网络挂载的文件时可能会遇到这些问题,至少在.NET 2.0中存在这些问题。我们发现如果网络连接中断了一段时间,它们可能会失败。

相关问题