Aber damit schießt Du mit Kanonen auf Spatzen.
Irgendwann kommst Du dazu, dass die Organisation der simplen Zwischennachricht aufwendiger wird als Deine Berechnung selbst.
Du kannst das natürlich so machen, aber es ist m.E. unnötig kompliziert und bietet keinen wirklichen Vorteil.
Hast Du denn irgendwie Hänger oder spürbare Verzögerungen, wenn Du aus dem Arbeitsthread einfach synchronisiert MyForm.ShowProgressValue(Value) aufrufst (ohne zweiten Thread und ohne Timer)?
Wenn ja, müsste man nach der Ursache schauen, aber dann stimmt irgendwo anders sicher etwas nicht.
Wie lange arbeitet der ArbeitsThread eigentlich und wie viele Zwischenschritte werden erledigt (also wie viele Progress-Aktualisierungen gibt es)?