2

私はこれを持っています

public Result SomeMethod()
{
    Popup popup = new Popup();

    popup.Closed += PopupClosedHandler;
    popup.ShowPopup();


    // have to return the result from handler.

}

void PopupClosedHandler(EventArgs<PopupEventArgs> args)
{
    Result result = args.Result;
}

SomeMethod()ポップアップが呼び出されるまで呼び出しをブロックし、ハンドラーでResultfromを返す必要があります。args私はこれをどのように行うのか、あるいはそれを探す方法さえもわかりません。誰かが私を正しい方向に向けることができますか?ありがとう

4

2 に答える 2

3

EventWaitHandleを使用したい。

public Result SomeMethod()
{
    _doneHandler = new EventWaitHandle(false, EventResetMode.ManualReset);

    Popup popup = new Popup();

    popup.Closed += PopupClosedHandler;
    popup.ShowPopup();


    // This will wait until it is SET.  You can pass a TimeSpan 
    // so that you do not wait forever.
    _doneHandler.WaitOne();

   // Other stuff after the 'block'

}

private EventWaitHandle _doneHandler;

void PopupClosedHandler(EventArgs<PopupEventArgs> args)
{
    Result result = args.Result;

    _doneHandler.Set();
}
于 2012-04-04T03:45:30.540 に答える
0

これは大雑把ですが、一般的な考え方を示す必要があります

public Result SomeMethod()
{
    Popup popup = new Popup();
    bool called = false;
    Result result = null;
    popup.Closed += (args) => {
        called = true;
        result = args.Result;
    }
    while(!called) ;
    return result;
}
于 2012-04-04T03:38:44.013 に答える