2013-12-20 54 views
-2

我在編程方面很新,還在學習。我想讓程序每隔10秒自動保存一次RTF文件,但我不想讓程序通知用戶,所以這將在後臺完成。程序是用WPF應用程序編寫的。我不會發布代碼,因爲我不確定我的自己如何開始寫它。每10秒自動保存一次文件

+4

請向我們解釋你*有*嘗試。 – OmniOwl

+0

看看這個http://stackoverflow.com/questions/12535722/what-is-the-best-way-to-implement-a-timer –

+0

你是什麼意思?你想自動創建一個備份?或保存打開的文件? – BrunoLM

回答

1

我建議你創建你需要保存文件的方法,然後使用後臺進程(線程)和計時器來調用你每10秒寫入的方法。

參見:

  1. Foreground and Background Threads
  2. Timer Class
+1

一個學習者,你希望他們開始線程化。什麼可能出錯! :) –

+0

後臺進程是一個很好的使用線程,不像以前那麼辛苦。我假設他使用.Net3 +,但是它可能是中級而不是初學者。 – Joshy

0

嗯,我建議有一個新的線程定期檢查它,並在執行保存操作時,它也將保存在一個將當前時間變量更多10秒,將檢查此變量,並且如果currentTime> lastSaveTime您將再次保存它。考慮使用後臺工作者。另外,我認爲你可以讓線程睡眠10秒鐘並保存文檔。然而,上面沒有一個對我來說顯得優雅,我相信有更好的方法。

+1

偉大的思想:-) – Joshy

0

您嘗試以下代碼,其中richText是文本框的名稱,這是一個非常基本和快速的模擬組合。

private void startSaveTimer() 
    { 
     Timer saveTimer = new Timer(10000); 
     saveTimer.Elapsed += saveTimer_Elapsed; 
     saveTimer.Start(); 
    } 

    private void saveTimer_Elapsed(object sender, ElapsedEventArgs e) 
    { 
     string filepath = @"C:\yourfilelocation"; 
     FileStream file = new FileStream(filepath, FileMode.OpenOrCreate); 
     new TextRange(richText.Document.ContentStart, richText.Document.ContentEnd).Save(file, DataFormats.Rtf); 
    } 

只要在加載帶有豐富文本框的窗口時調用startSaveTimer。

這可能不是最佳實踐,但它會向您介紹實現任務的基礎知識。

+0

謝謝,MikeDub。我試圖把它放進去,但是我在Timer的錯誤列表上找到了錯誤(類型或命名空間找不到(你是否遺漏了使用指令或程序集引用?))對於ElapsedEventArgs與Timer相同。 – Ronin

+0

您需要在其他使用語句中包含以下語句: using System.Timers; – MikeDub

+0

對不起,也忘了包括啓動命令,我已經更新了我的答案,以包含它。 – MikeDub