我正在使用Webclient上传文件,当用户点击中止时。我想取消上传,但文件会继续上传,直到完成为止。在我的中止按钮中,我发出了一个wc.CancelAsync,导致表单关闭并发出一个TargetInvocationException,在Program.cs上出现未处理的错误
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new frmUpload());
}
以下是我的部分代码
WebClient wc = new WebClient();
private void buttonAbort_Click(object sender, EventArgs e)
{
wc.CancelAsync();
}
//Upload code
try
{
wc.UploadFileAsync(Uripath, localPath);
wc.UploadProgressChanged += uploadBarStat;
wc.UploadFileCompleted += new UploadFileCompletedEventHandler(doneFTP);
}
我的问题几乎与Cancel a Webclient.DownloadFile within a BackgroundWorker
一致我错过了什么以及如何顺利取消上传需要做什么?或陷阱异常错误?
TIA 史蒂夫
答案 0 :(得分:0)
你是否有机会接受“尝试”?另外,将wc.CancelAsync();
包装在try / catch中,然后运行调试器。通过catch捕获TargetInvocationError
是否像普通异常一样,或者它仍然在IDE中引发了一个丑陋的错误?
如果它仍然在IDE中引发一个丑陋的错误,也许这篇文章会有所帮助:
Why is TargetInvocationException treated as uncaught by the IDE
答案 1 :(得分:0)
添加变量boolean:
bool inUpload=false;
然后改变值,如:
void UploadProgressChanged()
{
inUpload=true;
}
void UploadFileCompleted()
{
inUpload=false;
}
并添加单击事件检查:
private void buttonAbort_Click(object sender, EventArgs e)
{
if (inUpload) wc.CancelAsync();
}