Единственная ситуация, в которой неназванное пространство имен в заголовке может быть полезным, состоит в том, когда Вы хотите распределить код как заголовочные файлы только. Например, большое автономное подмножество Повышения является просто заголовками.
маркер ignore
для кортежей, упомянутых в другом ответе, является одним примером, _1
, _2
и т.д. связывают заполнителей, другие.
Самый простой способ сделать это - использовать анонимную функцию (анонимный метод или лямбда-выражение) для подписки на событие , затем сделайте так, чтобы ваш метод имел только те параметры, которые вам нужны:
public void downloadphoto(string struri, string strtitle, string placeid)
{
using (WebClient wc = new WebClient())
{
wc.DownloadDataCompleted += (sender, args) =>
DownloadDataCompleted(strtitle, placeid, args);
wc.DownloadDataAsync(new Uri(struri));
}
}
// Please rename the method to say what it does rather than where it's used :)
private void DownloadDataCompleted(string title, string id,
DownloadDataCompletedEventArgs args)
{
// Do stuff here
}
Вы можете создать частный класс и поместить туда обработчик. Например,
public void downloadphoto(string struri, string strtitle, string placeid)
{
using (WebClient wc = new WebClient())
{
wcHandler handler = new wcHandler() { Strtitle = strtitle, Placeid = placeid };
wc.DownloadDataCompleted += handler.wc_DownloadDataCompleted;
wc.DownloadDataAsync(new Uri(struri));
}
}
private class wcHandler
{
public string Strtitle { get; set; }
public string Placeid { get; set; }
public void wc_DownloadDataCompleted(object sender, DownloadDataCompletedEventArgs e)
{
// Do Stuff
}
}
Хотя, учитывая элегантность ответа Джона, он, вероятно, использовал бы это!
DownloadDataAsync
имеет перегрузку, которая принимает объект:
DownloadDataAsync(uri, object)
Этим объектом может быть любая произвольная вещь, которая передается в обработчик DownloadDataCompleted
:
public void downloadphoto(string struri,string strtitle,string placeid)
{
using (WebClient wc = new WebClient())
{
string[] data = new string[2] { strtitle, placeid };
wc.DownloadDataCompleted += wc_DownloadDataCompleted;
wc.DownloadDataAsync(new Uri(struri), data);
}
}
void wc_DownloadDataCompleted(object sender, DownloadDataCompletedEventArgs e)
{
string[] data = (string[])e.UserToken;
string strtitle = data[0];
string placeid = data[1];
}