internet丢失时要查找的事件
本文关键字:查找 事件 internet | 更新日期: 2023-09-27 18:21:54
我正在使用C#创建一个windows应用程序。它用于检查产品的任何更新版本是否可用。如果是,用户只需使用应用程序的UI即可下载,而无需打开任何浏览器。
应用程序中的一个窗口使用ProgressBar控件显示下载状态。问题是,如果互联网断开连接,应用程序就不会知道。比如说,下载量达到45%后,网络断开连接;但是ProgressBar保持显示45%。
一旦发生这种情况,是否会引发任何财产/事件?请帮忙。附上我的代码,供您参考。谢谢
private void CheckForUpdate_Load(object sender, EventArgs e)
{
string downloadURL = Convert.ToString(ConfigurationManager.AppSettings["TempDownloadURL"]);
WebClient wcDownloadFile = new WebClient();
Uri myUri = new Uri(downloadURL);
wcDownloadFile.DownloadFileAsync(myUri, downloadLocation);
wcDownloadFile.DownloadProgressChanged += new DownloadProgressChangedEventHandler(wcDownloadFile_DownloadProgressChanged);
}
void wcDownloadFile_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
try
{
int bytesDownloaded = Int32.Parse(e.BytesReceived.ToString());
int totalBytes = Int32.Parse(e.TotalBytesToReceive.ToString());
progBarSoftPhone.Value = e.ProgressPercentage;
lblStatus.Text = (bytesDownloaded / 1024).ToString() + " KB out of " + (totalBytes / 1024).ToString() + " KB downloaded (" + e.ProgressPercentage.ToString() + "%).";
}
catch (Exception ex)
{
MessageBox.Show("ERROR: " + ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
-
您可以使用NetworkChange.NetworkAvailabilityChanged事件http://msdn.microsoft.com/en-us/library/system.net.networkinformation.networkchange.networkavailabilitychanged.aspx它会告诉你在局域网出现问题的情况下,例如:网络电缆拔出或用户自己禁用NetworkInterface。
-
在互联网中断的情况下,你需要对自己的服务器使用某种ping机制来检查服务器是否可访问,你可以在开始下载ping时启动计时器,并定期检查,直到下载完成,一旦下载完成或用户取消,你就可以停止计时器。
为DownloadFileCompleted事件添加一个事件侦听器,并检查AsyncCompletedEventArgs的Error属性。
在CheckForUpdate_Load方法中添加:
wcDownloadFile.DownloadFileCompleted += WebClOnDownloadFileCompleted;
然后在处理程序中,您可以停止进度条,以防出现错误:
private void WebClOnDownloadFileCompleted(object sender,
AsyncCompletedEventArgs asyncCompletedEventArgs)
{
if (asyncCompletedEventArgs.Error != null)
// code to handle it
}