SynchronizationContext を使用して、Send を介して値 (具体的には MessageBox DialogResult) を返す必要があります (「Post」を介した非同期は必要ありません)。構文がわからないだけです。メイン フォームの IWin32Window 値に簡単にアクセスできないことが原因と考えられるメイン ウィンドウの背後に MessageBox が表示されるという問題がありました...これを使用していますが、正直言って不快です。
DialogResult dr;
SynchronizationContext synchContext;
//in main forms constructor
{
...
synchContext = AsyncOperationManager.SynchronizationContext;
}
void workerThread( object obj, DoWorkEventArgs args)
{
// SynchronizationContext passed into worker thread via args
sc.Send( delegate {dr = MessageBoxEx.Show( "Yes or no?", "Continue?", MessageBoxButtons.OKCancel, MessageBoxIcon.Question );},null);
}