Вы можете использовать Control.Invoke (или this.Invoke)
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) {
this.Invoke(new MessageBoxDelegate(ShowMessage), "Title", "MEssage", MessageBoxButtons.OK, MessageBoxIcon.Information); }
Это сделает его модальным для потока пользовательского интерфейса.