You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在创建IN单据后执行Maj BFT动作且仅让Genbft延迟1000ms

解决方案

问题根源在于当前代码使用Task.Delay(1000).Wait()进行同步阻塞,会卡住UI线程,导致手动点击和自动运行「Maj BFT」动作时都受延迟影响。要实现仅手动触发该动作时延迟1000毫秒,自动运行时无延迟,可通过判断动作触发来源区分处理:

修改后的代码:

public PXAction<POReceipt> Genbft;
[PXButton(CommitChanges = true)]
[PXUIField(DisplayName = "Maj BFT", Enabled = true)] 

protected virtual async Task genbft()
{
    // 仅在用户手动点击按钮时执行延迟
    if (Base.Actions[typeof(Genbft)].PressedByUser)
    {
        await Task.Delay(1000);
    }

    // 这里添加「Maj BFT」动作原本的业务逻辑代码
}

关键说明:

  • 把方法改为异步async Task形式,替换同步阻塞的Wait(),避免UI线程卡顿
  • 利用Acumatica的PressedByUser属性判断动作触发方,自动运行场景下跳过延迟逻辑,不影响创建IN单据后的执行效率

内容的提问来源于stack exchange,提问作者Xavier LARTEM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 22:55:56