C# Как из другого потока обновить control на форме?
можно еще прощеBeginInvoke(new MethodInvoker(delegate
            {
                //здесь твой код в основном потоке
            }));
Как вызвать BackgroundWorker.OnProgressChanged из pingSender.PingCompleted += new PingCompletedEventHandler(PingCompletedCallback);
Я понимаю для того чтобы воспользоваться прелестями  BackgroundWorker - в него надо запихнуть процедуру, которая будет бежать в фоне и она уже сможет вызывать OnProgressChanged.
У меня несколько другая ситуация.