FormRun.wait():方法已过时,该怎么用呢?

时间:2019-03-08 13:29:19

标签: axapta x++ dynamics-365-operations

我目前正在为一个更大的项目修复一些BestPractice-Warnings。我在某些情况下会调用表单,并且在做更多事情之前需要等待表单,这主要是一些对话框。为了等待表单,经常使用以下代码:

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 个答案:

答案 0 :(得分:5)

TLDR

我认为这是从最佳实践检查中得出的错误肯定。要摆脱最佳实践警告,可以将它们添加到禁止的最佳实践列表中,也可以在代码中添加最佳实践禁止。

详细信息

Deprecated APIs (June 2017)中表示wait的{​​{1}}方法:

  

概述

     

用于阻止并等待交互/操作并通知   解除封锁。

     

弃用的原因

     

对于所有除formRun 以外的对象,这些调用已被弃用,并且   衍生产品。

     

迁移说明

     

允许从formRun或其派生类调用这些API。   应该删除从任何其他对象对这些API的调用。

当您为Objectmetadata search时,您还将获得很多结果(在8.0版上超过1000个)。这进一步表明code:"formRun.wait()"不推荐使用此方法。

也就是说,您可能想看看下面的链接,其中提到可以向其中添加事件处理程序的FormRun。到目前为止,我还没有亲自尝试过,但这可能适用于您的情况。

FormRun.wait, Box and ChangeCompany - a poor cocktail