C# 未使用WebClient触发事件。。。怎么了?
我正在编写一个实用程序来执行SQL Server备份,然后压缩文件,然后使用WebClient将其上载到我的FTP站点。一些文件可能相当大,我需要使用ProgressBar显示上传的状态。WebClient提供了两种方法来处理此问题,UploadProgressChangedEventHandler和UploadFileCompletedEventHandler,但WebClient没有触发它们 我已经尝试过使用WebRequest和FtpWebRequest复制文件的其他方法,但它们也不能正常工作,而且WebClient看起来很简单,所以我就这样做了C# 未使用WebClient触发事件。。。怎么了?,c#,events,C#,Events,我正在编写一个实用程序来执行SQL Server备份,然后压缩文件,然后使用WebClient将其上载到我的FTP站点。一些文件可能相当大,我需要使用ProgressBar显示上传的状态。WebClient提供了两种方法来处理此问题,UploadProgressChangedEventHandler和UploadFileCompletedEventHandler,但WebClient没有触发它们 我已经尝试过使用WebRequest和FtpWebRequest复制文件的其他方法,但它们也不能正常
try
{
WebClient client = new WebClient();
client.Credentials = new NetworkCredential(txtFTPUserName.Text, txtFTPPassword.Text);
client.UploadProgressChanged += new UploadProgressChangedEventHandler(UploadProgressChangedEventArgs);
client.UploadFileCompleted += new UploadFileCompletedEventHandler(UploadFileCompletedEventHandler);
progBar.Visible = true;
progBar.Value = 0;
client.UploadFile(@"ftp://novantconsulting.com/SQLBackups/StrataFrame.bak", @"E:\Strataframe.bak");
}
private void UploadProgressChangedEventArgs(object sender, UploadProgressChangedEventArgs e)
{
int percentage = (Convert.ToInt32(e.BytesSent) / Convert.ToInt32(e.TotalBytesToSend)) * 100;
if (progBar.Value < progBar.Maximum)
{
progBar.Value = percentage;
}
else
{
progBar.Value = 100;
}
}
试试看
{
WebClient客户端=新的WebClient();
client.Credentials=新的网络凭据(txtFTPUserName.Text,txtftpassword.Text);
client.UploadProgressChanged+=新的UploadProgressChangedEventHandler(UploadProgressChangedEventArgs);
client.UploadFileCompleted+=新的UploadFileCompletedEventHandler(UploadFileCompletedEventHandler);
progBar.Visible=true;
progBar.Value=0;
client.UploadFile(@)ftp://novantconsulting.com/SQLBackups/StrataFrame.bak“,@“E:\Strataframe.bak”);
}
私有void UploadProgressChangedEventArgs(对象发送方,UploadProgressChangedEventArgs e)
{
整数百分比=(Convert.ToInt32(e.BytesSent)/Convert.ToInt32(e.TotalBytesToSend))*100;
if(编程条值<编程条最大值)
{
progBar.Value=百分比;
}
其他的
{
程序条值=100;
}
}
问题是WebClient没有引发事件,以便委托可以完成更新ProgressBar的工作。我被告知这是WPF的一个已知问题,但我正在使用WinForms,因此该问题不适用于,根据,仅当通过调用或启动上载时才会引发该事件
根据,仅当通过调用启动上载时才会引发该事件
简言之,您所呼叫的服务器不会引发这些事件;请改用。根据,仅当通过调用或启动上载时才会引发该事件
根据,仅当通过调用启动上载时才会引发该事件
简言之,您所呼叫的服务器不会引发这些事件;请改用。请修复示例代码。您得到了一个try块,没有catch或finally,并且在任何函数之外。如果这是您的真实代码,那么这是无法编译的。我没有发布完整的try-catch-finally块,因为它似乎与这个问题没有密切关系。发帖过程中的说明告诉你,要把问题的意思表达清楚,请修改你的示例代码。您得到了一个try块,没有catch或finally,并且在任何函数之外。如果这是您的真实代码,那么这是无法编译的。我没有发布完整的try-catch-finally块,因为它似乎与这个问题没有密切关系。发帖过程中的说明告诉我们,要把问题的意思表达清楚,就必须把最基本的内容发出去。