У нас есть веб-сервер, на котором запущен hangfire, который периодически опрашивает общий сетевой диск с примером пути:
\\SXXXXX\XXXXX$\XXX\
, который периодически выдает исключение System.IO.DirectoryNotFoundException, однако каталог создается тем же компонентомкода.
Кажется, что он работает нормально 8/10 раз, и в 2 раза он генерирует исключение, фактически удаляет папку, если она пуста, то есть код, который выполняется после точки исключения?
Вот пример блока кода:
var downloadDirectory = "*OMITTED*
Directory.CreateDirectory(downloadDirectory);
TestDirectoryCreatedOnNetwork(downloadDirectory);
var dir = new DirectoryInfo(downloadDirectory);
if (dir.GetFiles().Count() == 0)
{
Directory.Delete(downloadDirectory);
return false;
}
Поиск в Google привел нас к мысли, что: Directory.CreateDirectory () потенциально может страдать от задержки, поэтому мы добавили следующее:
private static void TestDirectoryCreatedOnNetwork(string directory)
{
int waitCount = 10;
do
{
if (Directory.Exists(downloadDirectory))
{
break;
}
Thread.Sleep(10000); // sleep 100ms
waitCount--;
if (waitCount <= 0)
{
throw new Exception("Failed to create directory");
}
} while (true);
}
Мы знаем, что код работает из-за того, что он выполняется 8/10 раз, поэтому мы не совсем уверены, куда идти.
Спасибо!