Мне нужно написать файл, который находится в удаленном каталоге. Мне нужно создать приложение журнала: каждый раз, когда возникает ошибка, я хочу получить доступ к этому удаленному файлу и написать строку. Но если удаленный каталог недоступен, мне все равно. Я просто хочу, чтобы основное приложение продолжало работать.C# Блокировать доступ к файлу после таймера
Обычно доступ к этому удаленному каталогу занимает 1 секунду. Если метод WriteLine занимает более 1 секунды, я хочу его заблокировать.
Я попытался с попыткой поймать, но тогда все приложение заблокировано в течение длительного времени. Мне нужно прервать эту попытку написать раньше.
Это основной код, используемый для записи на текстовый файл:
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/) или [Кварц] (http://www.quartz-scheduler.net/), поэтому, если файл используется другим процессом, вы можете перепланировать задание. – SarangK
Но вероятность того, что другой процесс использует файл, очень низок. Вот почему мне все равно, если удаленный каталог недоступен, если один раз я не сохраняю LOG, это не большая проблема. Я просто не хочу, чтобы основное приложение было уложено по этой причине .. – Emanuele