求助:如何快速判断网络文件夹是否存在

CONG_ZHANG 2011-05-27 09:10:17
目前有下列几种方法:
1.Directory.Exists

2.Dim dDir As New System.IO.DirectoryInfo(FolderName)
dDir.Exists

3.My.Computer.FileSystem.DirectoryExists(FolderName)

4.Dir(FolderName)

5.Public Declare Function PathFileExists Lib "shlwapi.dll" Alias "PathFileExistsA" (ByVal pszPath As String) As Long

但是如果网络断开的话返回值都要一小段时间,有没有快速的方法?
...全文
220 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
思考 2011-05-29
  • 打赏
  • 举报
回复
还是应该用ping
你想时间很短就能判断,不管哪种方法都是不可能的
Tosp2012 2011-05-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 cong_zhang 的回复:]
引用 7 楼 fangxinggood 的回复:
引用 6 楼 cong_zhang 的回复:

ping一个不存在的主机也是需要时间的啊
不是可以设置超时时间吗?不看回答的吗?

超时时间也是时间啊
[/Quote]
ping是最好辦法,每個辦法都是要時間。
CONG_ZHANG 2011-05-27
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 fangxinggood 的回复:]
引用 6 楼 cong_zhang 的回复:

ping一个不存在的主机也是需要时间的啊

不是可以设置超时时间吗?不看回答的吗?
[/Quote]

超时时间也是时间啊
机器人 2011-05-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cong_zhang 的回复:]

ping一个不存在的主机也是需要时间的啊
[/Quote]
不是可以设置超时时间吗?不看回答的吗?
CONG_ZHANG 2011-05-27
  • 打赏
  • 举报
回复
ping一个不存在的主机也是需要时间的啊
xtmhm890 2011-05-27
  • 打赏
  • 举报
回复
直接PINGE他的主机啊
CONG_ZHANG 2011-05-27
  • 打赏
  • 举报
回复
判断网络状态也是一个好方法,但是如果网络连接正常,只是对方主机根本不存在呢?
机器人 2011-05-27
  • 打赏
  • 举报
回复
判断自己网络是否可用,一句代码就搞定了。

My.Computer.Network.IsAvailable

判断对方能ping通:(后面是超时单位ms)

My.Computer.Network.Ping("192.168.1.1", 5000)
暖枫无敌 2011-05-27
  • 打赏
  • 举报
回复
判断网络状态代码

public sealed class NetworkHelper
{
#region 网络状态

/// <summary>
/// 监听计时器
/// </summary>
private Timer listenTimer;


private static NetworkHelper instance;

/// <summary>
/// 监听间隔
/// </summary>
const int LISTEN_TIME_SPAN = 2000;

//IsNetworkAlive Description
const int NETWORK_ALIVE_LAN = 1;
const int NETWORK_ALIVE_WAN = 2;
const int NETWORK_ALIVE_AOL = 4;

const int FLAG_ICC_FORCE_CONNECTION = 1;


private NetworkHelper()
{

}

static NetworkHelper()
{
instance = new NetworkHelper();
}


public static NetworkHelper GetNetworkHelperInstance()
{
return instance;
}

/// <summary>
/// 检查网络是否连通,有延迟
/// </summary>
/// <param name="connectionDescription"></param>
/// <param name="reservedValue"></param>
[DllImport("wininet.dll")]
private extern static bool InternetGetConnectedState(out int connectionDescription, int reservedValue);

/// <summary>
///
/// </summary>
/// <param name="lpszUrl">连接饿地址</param>
/// <param name="dwFlags">FLAG_ICC_FORCE_CONNECTION</param>
/// <param name="dwReserved">0</param>
[DllImport("wininet.dll")]
private extern static bool InternetCheckConnection(string lpszUrl, int dwFlags, int dwReserved);

/// <summary>
/// 检查网络是否连通,需要启动服务
/// </summary>
/// <param name="connectionDescription"></param>
[DllImport("sensapi.dll")]
private extern static bool IsNetworkAlive(out int connectionDescription);

/// <summary>
/// 检查是否能建立Internet连接,VISTA不可用
/// </summary>
/// <param name="dest"></param>
/// <param name="ptr">0</param>
[DllImport("sensapi.dll")]
private extern static bool IsDestinationReachable(string dest, IntPtr ptr);


/// <summary>
/// 互联网是否可用
/// </summary>
/// <returns></returns>
public bool IsInternetAlive()
{
int status;
//检查网络是否可用
if (IsNetworkAlive(out status))
{
//如果WAN可用,检查能否建立连接
//if (status == NETWORK_ALIVE_WAN)
//{
if (InternetCheckConnection("http://www.baidu.com", FLAG_ICC_FORCE_CONNECTION, 0) ||
InternetCheckConnection("http://www.sina.com.cn", FLAG_ICC_FORCE_CONNECTION, 0) ||
InternetCheckConnection("http://www.163.com", FLAG_ICC_FORCE_CONNECTION, 0))
{
return true; //如果能建立连接返回TRUE
}
else
return false;
//}
//else
// return false;
}
return false;
}

/// <summary>
/// 为NetworkStatusChanged事件处理程序提供数据
/// </summary>
public class NetworkChangedEventArgs : EventArgs
{
public NetworkChangedEventArgs(bool status)
{
IsNetworkAlive = status;
}

public bool IsNetworkAlive
{
get;
private set;
}
}

/// <summary>
/// 表示NetworkStatusChanged事件的方法
/// </summary>
public delegate void NetworkChangedEventHandler(object sender, NetworkChangedEventArgs e);

/// <summary>
/// 网络状态变更时触发的事件
/// </summary>
public event NetworkChangedEventHandler NetworkStatusChanged;

/// <summary>
/// 网络状态变更时触发的事件
/// </summary>
private void OnNetworkStatusChanged(NetworkChangedEventArgs e)
{
if (NetworkStatusChanged != null)
NetworkStatusChanged(this, e);
}


/// <summary>
/// 监听网络状态
/// </summary>
public void ListenNetworkStatus(SynchronizationContext context)
{
//获得当前网络状态,并通知

bool currentStatus = IsInternetAlive();
OnNetworkStatusChanged(new NetworkChangedEventArgs(currentStatus));

//启动监听网络状态,2秒钟检查一次,当状态变更时触发事件
listenTimer = new Timer(delegate
{
bool tmpStatus = IsInternetAlive();
if (currentStatus != tmpStatus)
{
currentStatus = tmpStatus;
context.Post(delegate { OnNetworkStatusChanged(new NetworkChangedEventArgs(currentStatus)); },null);

}
}
, null
, 0
, LISTEN_TIME_SPAN);

}


/// <summary>
/// 停止监听网络状态
/// </summary>
public void CloseListenNetworkStatus()
{
listenTimer.Dispose();
}
暖枫无敌 2011-05-27
  • 打赏
  • 举报
回复
那就再加一段代码,判断当前网络是否处于连接状态,不是的话,直接提示网络未连接。

16,557

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧