我目前在Intranet上遇到一些问题,并且某些网络驱动程序通常在一段时间后开始挂起
我执行了以下代码,以便检查给定路径是否可以访问异步,但是现在似乎出现了新问题。 有时,该任务根本无法启动,并且在中断时表示已排队等待启动。这种情况仅在很少的机器上发生,而不是在所有机器上发生,所以这就是为什么
public static class PingHelper
{
private static Task RealTask { get; set; }
public static bool IsAvailable { get; set; }
public static async Task Check(string location, int timeout)
{
if (RealTask == null)
{
DirectoryInfo directoryInfo = new DirectoryInfo(location);
RealTask = Task.Run(() =>
{
var result = directoryInfo.Exists;
});
Task dummyTask = Task.Delay(timeout);
if (dummyTask != await Task.WhenAny(RealTask, dummyTask))
{
RealTask = null;
IsAvailable = true;
}
return;
}
if (RealTask.IsCompleted)
{
RealTask = null;
}
IsAvailable = false;
}
}
代码应该创建一个任务,在x毫秒后检查是否成功返回任务,以及是否已经在Directory上挂起了一个任务,如果存在,只需假设其仍然挂起并立即返回false即可。
所以基本上我不确定问题的根本原因是什么,ThreadPool设置为1024,并且在中断期间只有3个任务正在运行,所以不会出现任务过多的情况