Winアプリケーションでマルチスレッドを使用しています
System.Threading.ThreadPool.QueueUserWorkItem(delegate{}, null);
問題は、私のメソッドがメイン スレッド (DialogeResult オブジェクト) で戻り値を必要とし、メイン スレッドthis.Invoke()
から値を取得できないことです。メソッドコードは次のとおりです。
public static DialogResult Show(IWin32Window owner, PSSettings.Settings settings, string title, string caption, MessageBoxButtons buttons)
{
return (DialogResult)((Form)owner).Invoke((Action)(() =>
{
PSMessageBox mb = new PSMessageBox();
mb._settings = settings;
mb.lblTitle.Text = title;
mb.lblCaption.Text = caption;
mb.Buttons = buttons;
return mb.ShowDialog();
mb.ShowDialog(owner);
}));
}
任意の種類のデリゲートを使用して、invoke メソッドから戻り値を取得する方法を教えてもらえますか?