Отправка переменной с помощью UploadProgressChangedEventHandler
Я строю программу, которая асинхронно загружает много файлов. Чтобы сделать индикатор выполнения с подробной информацией, я хотел бы передать переменную filepath в UploadProgressChangedEventHandler или использовать обходной путь. Я исследовал объект, отправленный функции, и нигде не нашел пути. другой мыслью было бы объявить функцию встроенной, как в других языках, например:
UploadProgressChangedEventHandler(functionname({ declare_function_here }));
Это код, который я использую сейчас:
public async Task upload(string cust, string proj, string path)
{
String myDocumentPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
Uri url = new Uri("http://xxx/webservice/sync.php?u=true&c=" + cust + "&p=" + proj + "&f=" + path);
string file = myDocumentPath + "\\yyy\\" + path;
WebClient client = new WebClient();
// add event handlers for completed and progress changed
client.UploadProgressChanged += new UploadProgressChangedEventHandler(client_UploadProgressChanged);
client.UploadFileCompleted += new UploadFileCompletedEventHandler(client_UploadFileCompleted);
// carry out the operation as normal
Console.WriteLine("sending..."+file);
client.UploadFileAsync(url, @file);
}
}
void client_UploadProgressChanged( object sender, UploadProgressChangedEventArgs e)
{
//MessageBox.Show(sender., "Error Title", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
upPerc = e.ProgressPercentage;
Console.WriteLine(e.ProgressPercentage);
}
ОБНОВЛЕНИЕ - не полное решение: решено с помощью этого кода... но теперь я не могу получить процент....... от передачи аргументов в обработчик событий
client.UploadProgressChanged += new UploadProgressChangedEventHandler((sender, eventArgs) =>
{
// name and age are accessible here!!
Console.WriteLine("Process "+path);
});