WebClient回调函数传递参数

sxl40750494 2013-08-27 02:05:26
使用WebClient类下载数据,具体代码如下:
void DownloadDataInBackground(String^ address, String^ dataTemp)
{
try
{
WebClient^ client = gcnew WebClient;
client->BaseAddress = address;

client->DownloadDataCompleted += gcnew DownloadDataCompletedEventHandler(DownloadDataCallback);
client->DownloadDataAsync(gcnew Uri(address));
}
catch(...)
{
Console::WriteLine("{0} download failed!", address);
}
}
其中,address是下载地址,dataTemp是我要传递的数据。
问题是,回调函数的格式只能是void DownloadDataCallback(Object^ sender, DownloadDataCompletedEventArgs^ e),那我怎么才能把我的dataTemp参数传递给回调函数呢?
先谢过了!
...全文
744 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuantf89 2014-03-06
  • 打赏
  • 举报
回复
public void DownloadStringAsync(Uri address, object userToken);
sxl40750494 2013-08-28
  • 打赏
  • 举报
回复
我知道你意思,但我的程序都是多线程加异步的,如果用自己的类成员的话肯定就乱套了,所以只能用回调函数参数类型的类的成员。所以我继承了WebClient类,添加了一个String类型的成员,这样就可以通过我自己继承的类将参数传给回调函数了。就是我一楼写的那种方法。
引用 1 楼 sxl40750494 的回复:
这么长时间都没人答复,好无语呐 我自己想了个方法:写一个类继承WebClient,添加一个String^成员变量。如下:
ref class myWebClient : WebClient
{
public:
	myWebClient()
	{
		
	}

	String ^ dataTemp;
};
这样,在回调函数里就可以这样(myWebClient^)sender->dataTemp获取到我要传的参数了! 不知道这样做有啥坏的影响不,求简单而安全的方法?!
真相重于对错 2013-08-28
  • 打赏
  • 举报
回复
因为不是你调用的所以传什么参数不是由你决定,如果你要传参数完全可以用类成员来达到 String^ dataTemp; void DownloadDataInBackground(String^ address) { try { WebClient^ client = gcnew WebClient; client->BaseAddress = address; client->DownloadDataCompleted += gcnew DownloadDataCompletedEventHandler(DownloadDataCallback); client->DownloadDataAsync(gcnew Uri(address)); } catch(...) { Console::WriteLine("{0} download failed!", address); } }
sxl40750494 2013-08-28
  • 打赏
  • 举报
回复
引用 2 楼 hdt 的回复:
回调函数的意思不是指你去调用,而是由对方调用,还有你要传参数,要传给谁,谁是接受者
我当然知道回调函数不是我自己调用了。我都说了,参数要传给回调函数。
真相重于对错 2013-08-27
  • 打赏
  • 举报
回复
回调函数的意思不是指你去调用,而是由对方调用,还有你要传参数,要传给谁,谁是接受者
sxl40750494 2013-08-27
  • 打赏
  • 举报
回复
这么长时间都没人答复,好无语呐 我自己想了个方法:写一个类继承WebClient,添加一个String^成员变量。如下:
ref class myWebClient : WebClient
{
public:
	myWebClient()
	{
		
	}

	String ^ dataTemp;
};
这样,在回调函数里就可以这样(myWebClient^)sender->dataTemp获取到我要传的参数了! 不知道这样做有啥坏的影响不,求简单而安全的方法?!

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧