FormRun.wait(): 方法已弃用,用什么代替?

FormRun.wait(): method is deprecated, what to use instead?

我目前正在修复一个更大项目的一些 BestPractice-Warnings。我有几个例子,在做更多的事情之前调用和等待表单,这主要是一些对话框。要等待表单,经常使用以下代码:

Object formRun;

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

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

formRun.wait();

我现在面临的问题是 'wait()' 似乎已被弃用,我不知道如何替换或修复它。我已经看到一些开发人员将表单声明为 'Object' 以消除此警告(顺便说一句没有用,这仍然会被检测到),但这是一个后期绑定调用,也应该是避免...

还有其他人遇到过这个问题吗?我尝试使用 system.reflection 命名空间调用此方法,但这看起来不正确,而且 x++ 中的代码也比这样一个简单任务所需的代码多得多。

TLDR

我认为这是最佳实践检查的误报。要摆脱最佳实践警告,您可以将它们添加到禁止的最佳实践列表或在代码中添加最佳实践禁止。

详情

Deprecated APIs (June 2017)中它说Objectwait方法:

Overview

Used to block and wait for an interaction/operation and notify to unblock.

Reason for deprecation

These calls are deprecated for all objects except formRun and it’s derivatives.

Migration notes

Calls to these APIs from formRun or it’s derivatives are allowed. Calls to these APIs from any other object should be removed.

当您为 code:"formRun.wait()" 执行 metadata search 时,您还会得到很多结果(在 8.0 版中超过 1000 个)。这进一步表明该方法未针对 FormRun.

弃用

也就是说,您可能想看看下面的 link,其中提到了可以添加事件处理程序的 formRun.lifecycleHelper()。到目前为止我还没有亲自尝试过,但它可能适用于你的情况。

FormRun.wait, Box and ChangeCompany - a poor cocktail