【发布时间】:2015-04-21 01:58:42
【问题描述】:
如何使用 foreach 向服务器发送请求,当我收到响应时,foreach 等待返回的信息处理完毕,然后继续处理下一个请求。
我的问题:在 foreach 中我发送了许多请求,而 foreach 继续没有处理我得到响应的信息。
例如:
foreach (DataLoader.GetInfo items in listBoxFetInfo.Items)
{
DownloadInfo(items.CompanyName);
}
和
void DownloadInfo(string name)
{
int requestId = feed.SendCompanyNameRequest(symbol.ToUpper(), sendType, sendTimePeriod, sendDateFrom, DateTime.Now);
}
和
feed.RequestCompanyName += new IFeedEvents_RequestCompanyNameEventHandler(feed_RequestName);
和
void feed_RequestName(int originalRequestId, short ResponseCode, string symbol, short symbolStatusCode, object records)
{
//save to file
}
我不能使用Start Multiple Async Tasks and Process Them As They Complete ,因为这个解决方案需要在我无法添加的地方添加 CancellationToken(不能在 void feed_RequestName 中)
这个问题还有什么解决办法?
另外,我无法更改以下签名:
feed_RequestName(int originalRequestId, short ResponseCode, string symbol, short symbolStatusCode, object records)
和
feed.SendCompanyNameRequest(symbol.ToUpper(), sendType, sendTimePeriod, sendDateFrom, DateTime.Now);
【问题讨论】:
-
我认为我们可能需要更多信息。
DataLoader是什么?feed是什么?它们是你写的东西还是一些图书馆?SendCompanyNameRequest是在另一个线程中执行还是阻塞调用? -
@LosFrijoles feed 是库,dataLoader 是我创建列表时的构造函数,它将加载列表中项目的信息
标签: c#