2010-02-17 17 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中存在這些問題。我們發現如果網絡連接中斷了一段時間,它們可能會失敗。

相關問題