What I mean to say is that you sure can make multiple queries but keep in mind that you cannot make multiple asynchronous calls sequentially, you need to wait for one to complete before you can call another.
In other words, this would fail:
identifyTask.ExecuteAsync(identifyParams1);
identifyTask.ExecuteAsync(identifyParams2);
So for example you have a list of url's to query on, you need to keep track on what has been queried and what has not been queried yet. After the QueryTask ExecultCompleted fires, that is the only time you can call another query.
Thank you Jennifer! Yeah, I see that 🙂Then can i use a switch for this, like those below. k is the Id of the layer, say if k=0, give the url of layers.ElementAt(0) to querytask. Then do the query and return different attribute field, for k=0, return "TRS" field, display them in the featuregrid. After this query completed, in the loop, k will be 1, and in the switch, give the url of layers.ElementAt(1) to querytask.Am I right? Or I make a mistake again 🙂
private void SpatialQuery(object sender, RoutedEventArgs e)
{
for (int j = 0; j < 2; j++)
{
spatialQ(j);
}
}
private void spatialQ(int k)
{
switch (k)
{
case 0:
QueryTask queryTask = new QueryTask((layers.ElementAt(0) as FeatureLayer).Url);
queryTask.ExecuteCompleted += QueryTask_ExecuteCompleted;
MessageBox.Show("k="+ k);
queryTask.Failed += QueryTask_Failed;
Query query = new ESRI.ArcGIS.Client.Tasks.Query();
query.OutFields.AddRange(new string[] { "TRS" });
ESRI.ArcGIS.Client.Geometry.Polygon queryGeometry = new ESRI.ArcGIS.Client.Geometry.Polygon();
queryGeometry.Rings.Add(pPointCollection);
query.Geometry = queryGeometry;
query.ReturnGeometry = true;
queryTask.ExecuteAsync(query);
break;
case 1:
QueryTask queryTask1 = new QueryTask((layers.ElementAt(1) as FeatureLayer).Url);
queryTask1.ExecuteCompleted += QueryTask_ExecuteCompleted1;
MessageBox.Show("k="+ k);
queryTask1.Failed += QueryTask_Failed;
Query query1 = new ESRI.ArcGIS.Client.Tasks.Query();
QueryDetailsDataGrid.DataContext = "null";
//query1.OutFields.AddRange(new string[] { "NAME_CNTY" });
ESRI.ArcGIS.Client.Geometry.Polygon queryGeometry1 = new ESRI.ArcGIS.Client.Geometry.Polygon();
queryGeometry1.Rings.Add(pPointCollection);
query1.Geometry = queryGeometry1;
query1.ReturnGeometry = true;
queryTask1.ExecuteAsync(query1);
break;
}
}