0
我需要編寫位於遠程目錄中的文件。我需要創建一個日誌應用程序:每次發生錯誤時,我想訪問這個遠程文件並寫一行。但是如果遠程目錄不可用,我不在乎。我只是想讓主應用程序繼續運行。c#在定時器後阻止對文件的訪問
通常訪問這個遠程目錄需要1秒。如果WriteLine方法需要超過1秒鐘,我想阻止它。
我嘗試了一個try catch,但隨後整個應用程序被阻塞了很長時間。我需要儘快打斷這種嘗試。
這是用於對txt文件寫入主代碼:
try
{
string TargetFile = "F:\\file.txt";
using (StreamWriter sw = File.AppendText(TargetFile))
{
sw.WriteLine("LOG: an error occured\n");
sw.Close();
}
}
catch (Exception)
{
throw;
}
我無法弄清楚如何來解決這個問題。也許通過在單獨的線程內運行寫操作?謝謝你的幫助!
您是否嘗試過使用異步方法?我聽說它對這種IO操作非常有用。請參考:https://msdn.microsoft.com/en-us/library/hh137902(v=vs.110).aspx – Hendry
我建議你應該使用像[Hangfire]這樣的後臺工作(http://hangfire.io/ )或[Quartz](http://www.quartz-scheduler.net/),因此如果該文件正在被另一個進程使用,您可以重新計劃作業。 – SarangK
但是另一個進程使用該文件的概率非常低..這就是爲什麼我不在乎遠程目錄是否無法訪問,如果有一次我不保存LOG不是一個大問題。我只是不希望主應用程序因此被堆疊。 – Emanuele