Я думаю, вы можете использовать событие ProgressChanged в BackgroundWorker для мониторинга этого события в вашем собственном потоке.
Обновление Если вы хотите передать пользовательскую информацию, такую как GeoCordinates, в поток основного пользовательского интерфейса, вы можете сделать это, используя перегруженный метод ReportProgress (Int32 progresszed, object userstate) метод.
Пример:
Это всего лишь пример, измените его в соответствии с вашими требованиями
Создайте класс для хранения кординатов:
public class Position
{
public int Lat{get;set;}
public int Long {get;set;}
}
В вашем DoWork
метод делает что-то вроде этого:
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
//Perform what ever is your task and when you get somthing like a GeoPosition cordinate
Position pos = new Position();
pos.Lat = 100;
pos.Long = 200; // just some position data
//pass it on to progress changed event
//any integer between 0 to 100 that tells how much you have done or just pass 0
backgroundWorker1.ReportProgress( 0, pos);
}
в вашем прогрессе изменен обработчик событий:
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
//retrieve position from userstate
Position pos = e.UserState as Position;
some_counter_or_progressbar.Value = e.ProgressPercentage;
textboxLatitude.Text = pos.Lat.ToString();
textboxLongitude.Text = pos.Long.ToString();
}
Я уверен, что вы получили идею ...