Не уверен, какую версию .net вы используете, если его 3.0+, вы можете что-то сделать в этом направлении.
private void UpdateValue(int newValue)
{
Action myAction = () => progressBar.Value = newValue;
if (progressBar.InvokeRequired)
progressBar.Invoke(myAction);
else
myAction();
}
Вызовите этот метод с новым значением для индикатора выполнения, который проверит, требует ли вызов маршалинга, и сделает соответствующий вызов. Будьте осторожны, InvokeRequired относительно дорог, поэтому используйте его только там, где это необходимо. Вы можете превратить это в метод расширения, чтобы при необходимости использовать этот шаблон для других элементов управления.
Надеюсь, это поможет.