private void onCloseWindow(ExmWindow target)
    {
        ExmWindowChange change = ChangeDispatcher <ExmWindowChange> .GetChange();

        change.target = target;
        dispatcher.dispatchChange(change, ExmWindowChangeType.WINDOW_CLOSED);

        //...
    }
    public void openWindow(string title, string message)
    {
        ExmWindow w = createWindow();

        w.setData(title, message, onCloseWindow);

        //...

        ExmWindowChange change = ChangeDispatcher <ExmWindowChange> .GetChange();

        change.target = w;
        dispatcher.dispatchChange(change, ExmWindowChangeType.WINDOW_OPENED);
    }
 private void onSomeWindowClose(ExmWindowChange change)
 {
     //узнали, что закрылось окно change.target
 }
 private void onSomeWindowOpen(ExmWindowChange change)
 {
     //узнали, что открылось окно change.target
 }