我們有一個地址數據表,我試圖對地理編碼進行測試。爲什麼谷歌地理編碼需要花費這麼長時間使用DownloadStringAsync(Uri,Object)C#
然後我們遍歷數據錶行,使用WebClient.downloadStringAsync(Uri,Object)將api請求發送到Google Geocoding,並對數據表進行所述更新。
所有線程完成後,我們需要更新數據庫。
爲此,我們使用Task.Factory.StartNew函數並跟蹤它們以等待所有任務完成。
我們在8000多個地址的超過10分鐘內看到了這一點。
這是正常的還是有更好的方法呢?
任何建議表示讚賞。
下調代碼是下面供參考:
DataTable dataTable = new DataTable();
String url = "https://maps.googleapis.com/maps/api/geocode/json?address={0}&key={1}";
List<Task> tasks = new List<Task>();
int i = 0;
foreach (DataRow row in dataTable.Rows) //8000 + rows
{
Uri uriWithAddress = new Uri(String.Format(url, new[] {
"full_address",
"apiKey"
}));
tasks.Add(Task.Factory.StartNew(() => {
using (System.Net.WebClient client = new System.Net.WebClient())
{
client.DownloadStringCompleted += (o, a) =>
{
//when finished... do some work like lock datatable
//and change some values etc
};
client.DownloadStringAsync(uriWithAddress, i);
i++;
}
}));
Task.WaitAll(tasks.ToArray());
看起來您似乎一次啓動8,000個Web請求? –