在我的 Windows 窗体应用程序中,我正在尝试测试用户访问远程计算机共享文件夹的能力。我这样做的方式(我确信有更好的方法......但我不知道它们)是检查远程机器上是否存在特定目录(我正在这样做由于我在组织中遇到的防火墙/其他安全限制)。如果用户有权访问共享文件夹,那么它会立即返回,但如果他们没有,它就会永远挂起。为了解决这个问题,我将检查放入另一个线程并仅等待 1000 毫秒,然后确定用户无法点击该共享。但是,当我这样做时,它仍然挂起,就好像它从未在同一个线程中运行一样。
是什么让它挂起,我该如何解决?我认为它在一个单独的线程中的事实将允许我让线程在后台自行完成。
这是我的代码:
bool canHitPath = false;
Thread thread = new Thread(new ThreadStart(() =>
{
canHitPath = Directory.Exists(compInfo.Path);
}));
thread.Start();
thread.Join(1000);
if (canHitPath == false)
{
throw new Exception("Cannot hit folder: " + compInfo.Path);
}
编辑:我觉得我应该添加抛出异常的行IS HIT。我已经对此进行了调试并对其进行了验证……但是,当引发异常时,就是我的程序挂起的时候。(我还可以补充一点,异常是在调用方法中捕获的,而我永远不会在调试器中使用 catch 语句。)