ボタンイベント関数には、複数のファイルをダウンロードするための複数のリンクがあります。これらのファイルをダウンロードするには、次のコードがあります。
for (int l = 0; l < itemLinks.Count(); l++)
{
string[] sourceParts = itemLinks[l].Split('/');
string fileName = sourceParts[sourceParts.Count() - 1];
WebClient client = new WebClient();
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
client.OpenReadCompleted += client_OpenReadCompleted;
client.OpenReadAsync(new Uri(itemLinks[l]));
}
OpenReadCompletedEventArgs の次の関数では、どのファイルのダウンロードが完了したかを知る必要があります。
async void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
string pff = e.ToString();
byte[] buffer = new byte[e.Result.Length];
await e.Result.ReadAsync(buffer, 0, buffer.Length);
using (IsolatedStorageFile storageFile =
IsolatedStorageFile.GetUserStoreForApplication())
{
using (IsolatedStorageFileStream stream = storageFile
.OpenFile(FILE_NAME, FileMode.Create))
{
await stream.WriteAsync(buffer, 0, buffer.Length);
}
}
//Also I need to do some stuff here with FILE_NAME
}
FILE_NAME 値を client_OpenReadCompleted に送信するにはどうすればよいですか?
for ステートメントでのすべての呼び出しで値が変更されるため、値をグローバル変数に保持することはできません。また、変数を += (sender, eventArgs) => として送信しようとしましたが、強制的にコードで待機していますボタンの機能を非同期に変更する