背景信息:我有一个通过URL列表运行的程序。每个URL一次只能下载一次,但在后台线程中运行以维护UI响应能力。为了报告进度,我使用了DownloadFileAsync方法。我的问题是我希望有一个取消按钮可以立即结束下载。我的代码遵循以下原则

AutoResetEvent autoMobile = new AutoResetEvent(false);
WebClient dclient = new WebClient();

//setup event handlers... for progress, etc...

dclient.DownloadFileAsync(new Uri(egg.DownloadURL), egg.LocalFilePath);
autoMobile.WaitOne();

//end of DoWork


我想不出一种方法或放置插入循环以检查取消挂起的方法。我只稍微了解线程,也不完全了解AutoResetEvent。

最佳答案

如果您使用的是System.Net.WebClient,它包含一个CancelAsync()方法,该方法应该为您完成。您所需要做的只是引用要取消的特定WebClient,以便按钮的click事件可以调用该方法。

提醒您,我自己还没有测试过-但这是我尝试的第一件事。

10-04 21:53
查看更多