/// <summary>
 /// Intended to be call by a worker thread; uses Invoke to make sure the delegate is invoked
 /// on the UI thread.
 /// </summary>
 /// <param name="newCaption"></param>
 public void SetCaption(string newCaption)
 {
     dlg.Invoke(() => { dlg.Caption.Text = newCaption; });
 }