-1

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 メソッドから戻り値を取得する方法を教えてもらえますか?

4

3 に答える 3