当我使用DownloadFileAsync
时,它似乎“阻止”某些东西。我需要程序能够在文件下载时下载更多字符串(下载文件,但用户仍然可以在目录中搜索链接以下载更多文件)。
用户界面不是100%被阻止,但是当用户点击“搜索”按钮时,它无法正常工作,DataGridView
中的点击也无法处理。然而,搜索按钮会按照编程清除DataGridView
,但等待我编写的以将字符串下载(与DownloadStringTaskAsync
异步)的目录不起作用。但是,当下载完成后,搜索最终会通过,然后填充DataGridView
,这对我来说似乎是非常不正常的行为。
当我注释掉DownloadFileAsync
时,一切都能够再次正常执行。我还试图评论我已经实施的事件处理程序,但这也无法解决问题。我不确定,谢谢你的帮助。
一些代码段:
下载文件:
var bmclient = new WebClient();
bmclient.DownloadFileAsync(new Uri(downloadURL), Path.Combine(Application.StartupPath, originalFileName + ".nexd"));
bmclient.DownloadProgressChanged += (o, e) =>
{
int rowIndex = -1;
DataGridViewRow row = form1.dataGridView2.Rows
.Cast<DataGridViewRow>()
.Where(r => r.Cells[0].Value.ToString().Equals(setID))
.First();
rowIndex = row.Index;
MethodInvoker action = () => form1.dataGridView2[2, rowIndex].Value = e.ProgressPercentage.ToString() + "%";
form1.BeginInvoke(action);
};
搜索目录,该目录由主窗体上的按钮调用:
public static async Task<string> GetBloodcatSearch(string query)
{
var return_data = string.Empty;
try
{
using (var client = new WebClient())
{
return return_data = await client.DownloadStringTaskAsync(new Uri("directory/" + query));
}
}
catch (Exception e)
{
return null;
}
}