を使用するDownloadFileAsync
と、何かを「ブロック」しているようです。ファイルのダウンロード中にプログラムがより多くの文字列をダウンロードできるようにする必要があります (ファイルをダウンロードしていますが、ユーザーはディレクトリを検索してより多くのファイルをダウンロードするリンクを見つけることができます)。
UI は 100% ブロックされているわけではありませんが、ユーザーが [検索] ボタンをクリックしても正しく機能せず、クリックもDataGridView
処理されません。ただし、検索ボタンはプログラムどおりにクリアDataGridView
されますが、ディレクトリを文字列として(非同期で)ダウンロードするために書いた awaitDownloadStringTaskAsync
は機能しません。ただし、ダウンロードが完了すると、検索が最終的に実行され、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;
}
}