Как вызвать событие, когда возникает другое событие? - PullRequest
3 голосов
/ 18 января 2011

У меня есть приложение, которое обрабатывает событие OnQuit другого работающего приложения. Я хотел бы вызвать дополнительное (настраиваемое) событие при обработке события OnQuit. Как я могу реализовать такое событие?

Мой обработчик OnQuit выглядит так:

    private void StkQuit()
    {
        _stkApplicationUi.OnQuit -= StkQuit;
        Marshal.FinalReleaseComObject(_stkApplicationUi);
        Application.Exit();
    }

Причина, по которой мне требуется дополнительное событие, заключается в том, чтобы я мог сообщить своему слою View, что приложение завершено. Если это не правильный путь, что будет лучше?

WulfgarPro

Ответы [ 2 ]

2 голосов
/ 18 января 2011

У меня обычно будет событие в моем интерфейсе вида, например:

public interface ITestView
    {
        event EventHandler OnSomeEvent;
    }

Затем от конструктора-докладчика я свяжу эти события:

public class TestPresenter : Presenter
{
    ITestView _view;

    public TestPresenter(ITestView view)
    {
        _view.OnSomeEvent += new EventHandler(_view_OnSomeEvent);
    }

    void _view_OnSomeEvent(object sender, EventArgs e)
    {
        //code that will run when your StkQuit method is executed
    }
}

И из вашего кода aspx:

public partial class Test: ITestView
{
     public event EventHandler OnSomeEvent;
     public event EventHandler OnAnotherEvent;

    private void StkQuit()
    {
        _stkApplicationUi.OnQuit -= StkQuit;
        Marshal.FinalReleaseComObject(_stkApplicationUi);
        if (this.OnSomeEvent != null)
        {
            this.OnSomeEvent(this, EventArgs.Empty);
        }
        Application.Exit();
    }
}

Надеюсь, это поможет !!

0 голосов
/ 18 января 2011

Просто зарегистрируйте это дополнительное событие в _stkApplication после регистрации OnQuit.

_stkApplicationUi.OnQuit += StkQuit;
_stkApplicationUi.OnQuitAdditional += AddlQuitHandler;

где AddlQuitHandler - обработчик для пользовательского события

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...