Как я могу заставить свое основное приложение SWT выходить правильно в Mac OS X 10.5.6?

Вы должны использовать Dispatcher в вашем методе Init. Например, вот так:

Application.Current.Dispatcher.Invoke(() => this.Close());
11
задан Alex Reynolds 27 January 2009 в 12:11
поделиться

2 ответа

Вы не высвобождаете собственные средства правильно - у Вас есть утечка ресурсов.

Вы не должны делать этого:

private void exit() {
    System.exit(0);
}

Основной метод выйдет, когда оболочка будет расположена. Если необходимо использовать метод выхода, назовите его после расположения всех ресурсов SWT:

    Display display = new Display();
    try {
        Shell shell = new Shell(display);
        try {
            shell.open();
            while (!shell.isDisposed()) {
                if (!display.readAndDispatch()) {
                    display.sleep();
                }
            }
        } finally {
            if (!shell.isDisposed()) {
                shell.dispose();
            }
        }
    } finally {
        display.dispose();
    }
    System.exit(0);
9
ответ дан 3 December 2019 в 09:42
поделиться

Когда Вы выделили Shell:

shell = new Shell();

некоторые собственные ресурсы были выделены наряду с ним. Необходимо избавиться от этих ресурсов перед выходом из приложения:

private void exit() {
    shell.dispose();
    System.exit(0);
}

Конечно, необходимо предоставить переменную "оболочки" выходу () метод, чтобы сделать это.

Обратите внимание, что я не полагаю, что необходимо расположить Дисплей, так как Вы не создали его с"new Display()". Но что-либо в SWT (за исключением нескольких объектов, где это документируется в JavaDoc), что Вы создаете с new необходимо расположить, когда Вы закончены с ним. Иначе Вы пропустите собственные ресурсы.

2
ответ дан 3 December 2019 в 09:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: