C# 了解计算机何时连接到Internet(事件)

C# 了解计算机何时连接到Internet(事件),c#,.net,winforms,forms,sockets,C#,.net,Winforms,Forms,Sockets,我正在创建一个Win Forms应用程序(C#)。我需要保持它24/7运行,并在连接到Internet时提交一些XML数据 我知道有几种方法可以保持ping一个固定域来检查系统是否连接到Internet 但我正在寻找更好或优雅的方法来做到这一点。我有一些提示,可以捕获一些套接字事件。请帮我提一些想法。请参阅: 您可以获得有关该功能的更多信息。尝试连接套接字并在成功时发送数据,您也可以触发某些事件,但这并不重要,只需重试连接,如果已连接,则发送。是否要响应网络可用性的更改?在这种情况下,可能会有兴

我正在创建一个Win Forms应用程序(C#)。我需要保持它24/7运行,并在连接到Internet时提交一些XML数据

我知道有几种方法可以保持ping一个固定域来检查系统是否连接到Internet

但我正在寻找更好或优雅的方法来做到这一点。我有一些提示,可以捕获一些套接字事件。请帮我提一些想法。

请参阅:


您可以获得有关该功能的更多信息。

尝试连接套接字并在成功时发送数据,您也可以触发某些事件,但这并不重要,只需重试连接,如果已连接,则发送。是否要响应网络可用性的更改?在这种情况下,可能会有兴趣。谢谢,但这对我来说很有用:)NetworkChange.NetworkAvailabilityChanged+=新networkavailabilitychangedventhadler(NetworkChange\u NetworkAvailabilityChanged)‌​;那也很方便!对于一些应用程序,您可能会考虑组合方式——例如,当网络可用性改变时,您的应用程序可能没有运行,因此在侦听其他事件之前需要进行初始检查。不管怎样,很高兴你找到了有效的方法。
[DllImport("wininet.dll")]
private extern static bool InternetGetConnectedState( out int Description, int ReservedValue );

//Creating a function that uses the API function...
public static bool IsConnectedToInternet( )
{
    int Desc ;
    return InternetGetConnectedState( out Desc, 0 ) ;
}
}