我需要编写一个位于远程目录中的文件。我需要创建一个日志应用程序:每次发生错误时,我都想访问这个远程文件并写一行。但如果远程目录不可用,我不在乎。我只是希望主应用程序继续运行。
通常访问此远程目录需要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;
}
我无法弄清楚如何解决这个问题。也许通过在单独的线程内运行写操作?谢谢你的帮助!
答案 0 :(得分:0)
1)不要在内部捕获块
2)使用托管线程来加速流程并提高性能
如果您使用的是.Net 4.5及以上,我在下面写的块将有所帮助。只需在程序中添加它
即可使用System.Threading.Tasks;
var errorWriter = Task.Run(() =>
{
try
{
string TargetFile = "F:\\file.txt";
using (StreamWriter sw = File.AppendText(TargetFile))
{
sw.WriteLine("LOG: an error occured\n");
sw.Close();
return "success";
}
}
catch (Exception ex)
{
return ex.Message;
// throw; _________________ don't throw here
}
});