新闻详情

新闻详情

首页 / 资讯中心 / 详情

当前实现中两个委托不是并行执行,而是“新优先、旧兜底”

发布时间:2026/9/28 4:45:41来源:尧图网络
当前实现中两个委托不是并行执行,而是“新优先、旧兜底”
当前实现中两个委托不是并行执行而是“新优先、旧兜底”。在 [AutomaticStationPipeline.cs]if(FailureAsync!null)returnFailureAsync(context,result);returnHandleFailureAsync!null?HandleFailureAsync(context.Product,result.Message,context.CancellationToken):Task.CompletedTask;因此现在 [EnsureAutomaticPipelineStarted] 同时赋值后HandleFailureAsyncHandlePipelineHandleFailureAsync,FailureAsyncHandlePipelineFailureAsync,实际只会执行FailureAsync - HandlePipelineFailureAsync(context, result) - HandlePipelineHandleFailureAsync(product, message, token)HandleFailureAsync委托本身不会被直接调用因为FailureAsync非空。它只是为旧工站或旧调用方保留的兼容回调。两个方法的职责差异HandlePipelineHandleFailureAsync参数只有product errorMessage token。无法知道失败类型、是否可重试、是否要求复位、恢复策略。负责旧业务兼容写一条普通失败日志。EAP Host 拒绝后执行上料位退料。当前通过errorMessage.Contains(易损件寿命到期)判断是否不弹窗。其它情况一律调用NotifyTestFailure。HandlePipelineFailureAsync参数是context AutomaticPipelineStageResult。包含完整的结构化信息FailureKindRecoveryActionCanRetryRequiresReset当前只写了结构化日志随后又把信息降级成字符串交给旧方法returnHandlePipelineHandleFailureAsync(context.Product,message,...);这导致前面已有的失败分类没有真正参与弹窗决策。当前问题HandlePipelineHandleFailureAsync命名重复且不清晰建议改为HandleLegacyPipelineFailureAsync。FailureAsync已经是正式入口HandleFailureAsync不应在同一工站同时赋值。不能使用错误文字决定弹窗例如“易损件寿命到期”文本变化后会重复弹窗。FailureAsync已知FailureKind却没有按类型分流。测试失败、停止、EAP 拒绝、可重试通讯失败目前容易走到相同的通用弹窗。建议分类类型是否弹窗处理方式OperatorStopped否记录日志继续吹扫、下料。Cancelled否记录日志不显示故障弹窗。Communication/PlcTimeout且CanRetrytrue否记录重试日志和状态重试耗尽才弹窗。Communication/PlcTimeout且不可重试是提示检查 PLC、电源、网络。SafetyInterlock是立即提示安全光幕、门禁、传感器或互锁未满足。ManualInterventionRequired是立即提示人工检查器件位置或现场状态。Unexpected是立即提示若RequiresResettrue则明确提示需复位。ContinueToPurgeAndUnload延迟先吹扫、下料在Completed中提示测试异常。EAP Host 拒绝否执行退料、记录协议日志不显示设备故障窗。易损件寿命到期否由寿命专用逻辑负责弹窗、红灯和错误码。推荐调整正式使用FailureAsyncHandlePipelineFailureAsync;不要同时赋值旧的HandleFailureAsync。旧委托保留在AutomaticStationPipelineHandlers中只供没有迁移结构化结果的旧流程使用。然后让HandlePipelineFailureAsync分为三部分1. 记录结构化日志 2. 执行必须的业务收尾 - Host 拒绝退料 - 安全复位标记 - 状态更新 3. 根据 FailureKind / RecoveryAction / CanRetry / RequiresReset 决定 - 仅日志 - 专用业务已提示 - 立即弹窗 - 下料完成后弹窗这样NotifyTestFailure只在明确需要人工立即处理时调用不再成为所有失败的默认出口。已完成失败处理优化并保留原有现场业务。修改重点当前工站只注册FailureAsync HandlePipelineFailureAsync。不再同时注册旧HandleFailureAsync避免维护时误以为两个回调都会执行。删除当前 ViewModel 中重复、拼写不清晰的HandlePipelineHandleFailureAsync业务入口。新增AutomaticPipelineFailureNotificationPolicy由流水线结果明确决定提示方式Silent停止、取消只记录日志。StatusOnlyEAP Host 拒绝等协议业务只记录日志和执行退料。AfterSafeUnload测试异常继续吹扫和下料完成后才弹窗。ImmediatePopupPLC 通讯中断、安全互锁、搬运异常、未预期异常、需复位等立即弹窗。AlreadyNotified易损件寿命等专用业务已报警不重复弹窗。保留的业务EAP Host 拒绝后仍执行扫描失败退料。Host 拒绝退料失败仍写辅助控制错误日志。测试 FAIL / ERROR 仍优先执行吹扫和下料。停止测试仍不弹“自动流程失败”窗口。易损件寿命到期仍由专用逻辑处理错误码、红灯和弹窗。立即弹窗不会重复写缺少分类信息的错误日志。修改文件[AutomaticStationPipeline.cs][StationControlViewModel.Workflow.cs]已验证编译通过0 errors。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

掼蛋AI从模仿学习到PPO自对弈:完整工程实战与避坑指南 2026/9/28 8:40:59

掼蛋AI从模仿学习到PPO自对弈:完整工程实战与避坑指南

简介:基于Python并结合模仿学习、深度强化学习构建的AI掼蛋系统完整项目,面向毕业设计、课程设计及期末大作业场景,也适合对棋牌AI感兴趣的中高级开发者参考。项目源码经过严格测试,可直接运行并支持二次扩展,配套文档…

阅读更多 →
机器人DH参数选择:标准型与改进型的本质区别与工程选型指南 2026/9/28 8:40:52

机器人DH参数选择:标准型与改进型的本质区别与工程选型指南

1. 这不是参数表填空题,而是机器人运动学建模的“第一道生死关”刚带完三届本科毕设,每年都有学生卡在DH参数这一步——不是不会算,是根本不知道自己算出来的结果能不能用。有位同学给松灵Piper机械臂建模,标准DH参数表填得工工整…

阅读更多 →
3步搞定wordpress本地无法打开,新手建站怎么选才不踩坑 2026/9/28 8:40:52

3步搞定wordpress本地无法打开,新手建站怎么选才不踩坑

3步搞定wordpress本地无法打开,新手建站怎么选才不踩坑 不会代码想做网站,最怕的就是本地环境一崩,wordpress本地无法打开,这时候别急着重装系统。很多人卡在“环境配置”和“选型”上,不知道 怎么选…

阅读更多 →
量化投资的神话与真相:从规则化决策到策略失效的完整解析 2026/9/28 8:40:52

量化投资的神话与真相:从规则化决策到策略失效的完整解析

"量化投资"这四个字,这几年在投资圈里被吹得神乎其神。朋友圈有人晒资金曲线,论坛里有人晒策略代码,似乎只要沾上"量化"的边,收益就能坐上火箭。我在这个行业摸爬滚打了十几年,见过太多人带着&quo…

阅读更多 →
Libero SoC 2024.2环境配置避坑指南:License、ModelSim与环境变量 2026/9/28 8:40:52

Libero SoC 2024.2环境配置避坑指南:License、ModelSim与环境变量

1. 为什么Libero SoC 2024.2的环境配置总在“最后一公里”翻车Libero SoC这套工具链有个很鲜明的特点:安装过程本身几乎不会出问题,真正让人抓狂的全是装完之后的事。License突然失效、ModelSim启动报错、环境变量改了没生效、仿真波形全是红线——这些问…

阅读更多 →
千万级并发秒杀下热点Key优化:从发现到兜底的全链路治理 2026/9/28 8:40:52

千万级并发秒杀下热点Key优化:从发现到兜底的全链路治理

聊到互联网大厂面试,特别是到了二面这个环节,面试官基本不会再让你背概念八股,而是直接拿一个真实的高压场景来试探你的系统设计功底。我身边一个朋友去阿里二面,面试官问的就是这么一道经典题:千万级并发秒杀抢卷&…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉