FormRun.wait (): метод устарел, что использовать вместо этого? - PullRequest
3 голосов
/ 08 марта 2019

В настоящее время я работаю над исправлением некоторых предупреждений BestPractice для более крупного проекта.Там у меня есть несколько случаев, когда формы вызывают и ждут, прежде чем делать больше вещей, это в основном некоторые диалоги.Для ожидания формы очень часто используется следующий код:

Object formRun;

//declare args and stuf...
formRun = classfactory.formRunClass(args);
formRun.init();

//call methods on formRun (display,run,etc...)

formRun.wait();

Проблема, с которой я сейчас сталкиваюсь, заключается в том, что wait () кажется устаревшим, и я не понимаю, как заменить или исправить это.Я видел, что некоторые разработчики объявили форму как «Объект», чтобы избавиться от этого предупреждения (кстати, это не сработало, это все равно будет обнаружено), но это вызов с поздней привязкой, которого также следует избегать...

Кто-нибудь еще имел эту проблему?я попытался вызвать этот метод, используя пространство имен system.reflection, но это выглядит не так, и в x ++ кода гораздо больше, чем нужно для такой простой задачи.

1 Ответ

5 голосов
/ 09 марта 2019

TLDR

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

Детали

В Устаревшие API (июнь 2017 г.) в нем говорится о wait методе Object:

Обзор

Используется для блокировки и ожидания взаимодействия / операции и уведомления Разблокирование.

Причина амортизации

Эти вызовы устарели для всех объектов , кроме formRun , и это производные.

Примечания по миграции

Разрешены вызовы этих API из formRun или его производных. Вызовы этих API из любого другого объекта должны быть удалены.

Когда вы выполните поиск метаданных для code:"formRun.wait()", вы также получите много результатов (более 1000 в версии 8.0). Это еще один признак того, что метод не рекомендуется для FormRun.

Тем не менее, вы можете взглянуть на следующую ссылку, в которой упоминается formRun.lifecycleHelper(), к которой можно добавлять обработчики событий. Я лично пока не пробовал, но это может быть применимо к вашему делу.

FormRun.wait, Box and ChangeCompany - плохой коктейль

...