Вместо вызова WebClient.DownloadStringAsync(Uri)
вызовите перегрузку DownloadString(Uri, Object)
, передав Uri
в качестве второго параметра. Затем в обработчике событий вы можете привести значение от e.UserToken
к Uri
, чтобы получить его. То есть:
Uri uri = new Uri("http://example.com");
WebClient client = new WebClient();
client.DownloadStringCompleted = StringDownloaded;
client.DownloadStringAsync(uri, uri);
void StringDownloaded(object sender, DownloadStringCompletedEventArgs e)
{
Uri uri = (Uri)e.UserToken;
...
}
Вы можете использовать эту технику для передачи любого состояния в обработчик событий.