0

質問があります。GPS 位置情報に関する詳細を提供する ReverseGeocodeQuery が 1 つあります。ここで、いくつかの ReverseGeocodeQuerys (それぞれが他の GPS 位置用) を同期したいと考えています。しかし、すべてのクエリを一瞬で開始すると、実行されません...

そのクエリを同期する簡単な方法はありますか?

for(int i = 0; i<mySimulation.Count(); i++)
                {

                    if (i==0)
                    {
                        AddMapLayer(mySimulation.ElementAt(i).Coordinate, Colors.Yellow, false);

                        myReverseGeocodeQuery_1 = new ReverseGeocodeQuery();
                        myReverseGeocodeQuery_1.GeoCoordinate = mySimulation.ElementAt(i).Coordinate;
                        myReverseGeocodeQuery_1.QueryCompleted += ReverseGeocodeQuery_QueryCompleted_1;
                        myReverseGeocodeQuery_1.QueryAsync();
                    }

                    if (i == 1)
                    {
                        AddMapLayer(mySimulation.ElementAt(i).Coordinate, Colors.Orange, false);

                        myReverseGeocodeQuery_2 = new ReverseGeocodeQuery();
                        myReverseGeocodeQuery_2.GeoCoordinate = mySimulation.ElementAt(i).Coordinate;
                        myReverseGeocodeQuery_2.QueryCompleted += ReverseGeocodeQuery_QueryCompleted_2;
                        myReverseGeocodeQuery_2.QueryAsync();
4

1 に答える 1

0

AutoResetEventを使用できます。

AutoResetEvent done = new AutoResetEvent(true);
...
for(int i = 0; i<mySimulation.Count(); i++)
{
    // Is somebody working?
    // If so I wait...
    done.WaitOne();

    if (i==0)
    {
        ....
        myReverseGeocodeQuery_1.QueryCompleted += ReverseGeocodeQuery_QueryCompleted_1;
        done.Reset(); // Hey I'm working, wait!
        myReverseGeocodeQuery_1.QueryAsync();
    }
    ...
}
...
void ReverseGeocodeQuery_QueryCompleted_1(...)
{
    ...
    done.Set(); // I'm done! Your turn...
}

地理クエリの実行中は、 WaitOneでメイン スレッドをブロックする必要があります(遅い時間のためにブロックする必要があります)。同時に別のスレッドが開始されるのを回避します...

于 2013-06-10T23:08:11.737 に答える