如何检查网络/共享文件夹的稳定性?

时间:2019-04-01 05:47:42

标签: c# network-programming shared-directory

在工作中,我们有一个共享文件夹,我在其中进行一些数据收集。在我的计算机上,我必须确保在数据收集过程中服务器没有关闭。

因此,我的方法是,每隔几分钟,我将连接并重新连接到服务器几次(如果失败,则停止数据收集,然后等待或执行下一个任务)

连接并重新连接到网络驱动器/共享文件夹的最佳方法是什么? 我会做类似的事情

public bool checkNet(UNCPath)
{
int connected = 0;
bool unstable = true;
while(unstable)
{
SubfunctionConnect(UNCPath); //connect to network using cmd 'net use' command
if(directory.exists(UNCPath) 
{
++connected;
}
else
{
connected = 0;
}
}
if(connected >= 3) unstable = false; //after 3 in arrow  successful connections then leave loop and proceed further tasks
return true;
}

1 个答案:

答案 0 :(得分:1)

我正在维护一个项目,该项目具有与您的需求相似的功能。

在该功能中,我们使用FileSystemWatcher来监视特定UNC位置的所有操作。 您可以实现OnError事件,该事件将在UNC路径不可用时触发。

您仍然可以在上面查看链接,以获取详细信息,这里还是一个简短的示例

using (FileSystemWatcher watcher = new FileSystemWatcher(@"\\your unc path"))
{
    // Watch for changes in LastAccess and LastWrite times, and
    // the renaming of files or directories.
    watcher.NotifyFilter = NotifyFilters.LastAccess
                         | NotifyFilters.LastWrite
                         | NotifyFilters.FileName
                         | NotifyFilters.DirectoryName;

    // Only watch text files.
    watcher.Filter = "*.txt";

    watcher.Created += (s, e) => { Console.WriteLine($"Created {e.Name}"); };
    watcher.Deleted += (s, e) => { Console.WriteLine($"Deleted {e.Name}"); };
    watcher.Error += (s, e) => { Console.WriteLine($"Error {e.GetException()}"); };


    // Begin watching.
    watcher.EnableRaisingEvents = true;

    // Wait for the user to quit the program.
    Console.WriteLine("Press 'q' to quit the sample.");
    while (Console.Read() != 'q') ;
}