一文看懂系列--Async await 与UI主线程关系

1.代码示例

private async void bt_SytemLightTest(object sender, RoutedEventArgs e)
{
    // 这行代码会调用异步方法,并且在后台线程执行,主线程不受阻塞
    await Manage_Axis.Instance.System8AxisMoveByRecipe(
        EnumSystemRecipeLightType.左1200红外光源,
        Manage_File.BDRecipeTemp.LULightMotorPara.Channel,
        Manage_File.BDRecipeTemp.LULightMotorPara.Brightness,
        Manage_File.BDRecipeTemp.LULightMotorPara.FilterNum);

    // 这行代码将在UI线程执行(即主线程)
    myLabel.Content = "任务完成";
}

2.释义:

  1. await 和线程调度

    • 当你使用 await 等待一个异步操作(比如 Manage_Axis.Instance.System8AxisMoveByRecipe)时,await 会暂停当前方法的执行,直到该异步操作完成。
    • 如果 System8AxisMoveByRecipe 是一个异步方法,await 会将控制权交给线程池中的其他线程(即后台线程),不会阻塞 UI 线程。
    • 这意味着,System8AxisMoveByRecipe 执行时,操作会在主线程之外的线程上进行(后台线程)。
  2. 返回到主线程

    • 在 System8AxisMoveByRecipe 执行完成后,await 会将剩下的代码(例如更新 UI 的代码)安排回 UI 线程执行。这是因为 UI 控件只能在 UI 线程上更新。
    • 所以,虽然 System8AxisMoveByRecipe 是在后台线程执行的,后续的 UI 更新操作会被调度回 UI 线程(如果有 UI 更新代码的话)。

3.补充

  • await 本身不会让方法变成多线程操作它只是在等待操作完成时(此时把操作给后台其他线程去做,其他后台线程做完那后,UI线程再去执行之后的任务)不阻塞主线程。如果 System8AxisMoveByRecipe 是异步且执行了后台操作,那么在这段时间内,UI 线程是自由的,可以继续响应用户输入等。
  • 如果 System8AxisMoveByRecipe 是同步方法,那么它会在主线程上执行,并可能会导致 UI 卡顿,直到执行完毕。
  • 所以,await 后的代码会在后台线程(如果方法是异步的)执行,而 UI 更新代码会回到主线程继续执行。

内容概要:本文提出了一种融合模型预测控制(MPC)人工势场法的船舶运动规划方法,旨在解决复杂海上多船遭遇场景下的避碰问题,并严格遵循国际海上避碰规则(COLREG)。该方法通过构建人工势场模型,综合考虑他船、静态障碍物、航道边界产生的排斥力以及目标点的吸引力,形成动态环境势场;同时引入MPC框架,基于船舶非线性动力学模型进行滚动时域优化,实时求解最优航向航速指令,确保路径的安全性、平滑性合规性。研究设计了对遇、交叉、追越及多船混杂等多种典型复杂会遇场景,并通过Matlab仿真验证了该方法在有效规避碰撞、保持航行稳定性以及准确行COLREG规定避让行为方面的优越性能。; 适合人群:从事智能航运、海洋工程、自动驾驶船舶、智能交通系统及相关路径规划算法研究的科研人员研究生;具备控制理论、优化算法基础及Matlab编程能力的技术开发者。; 使用场景及目标:① 实现复杂动态海况下多船智能避碰决策自主导航;② 开发符合国际航行法规的无人船自主航行核心算法;③ 为智能港口、海上交通管理系统(SMARTS)及无人艇集群协同提供算法支持;④ 用于科研仿真验证、算法对比测试及高校相关课程的教学演示。; 阅读建议:此资源以Matlab代码实现为核心,强调理论建模工程实践的深度融合,建议读者在深入理解MPC人工势场耦合机制的基础上,动手运行并调试所提供的仿真程序,重点分析不同势场参数、预测时域权重系数对避碰行为的影响,从而掌握算法的设计精髓优化策略。
内容概要:本文围绕永磁同步电机(PMSM)在宽速域范围内的无传感器控制技术展开研究,提出了一种基于观测器异构冗余柔性切换的复合控制策略。该策略融合高频信号注入法(适用于零低速区)自适应滑模观测器(SMO,适用于中高速区),通过设计动态加权融合机制实现全速域内转子位置速度的精确估计。系统在静止和低速状态下采用脉振方波高频注入实现初始定位,在中高速运行时则利用模糊超螺旋滑模观测器提升鲁棒性动态响应性能,并引入相位同步校正平滑切换算法以有效抑制模式切换过程中的抖动误差累积。研究在Simulink平台构建了完整的控制系统仿真模型,全面验证了所提方法在启动精度、稳态性能、动态响应及抗负载扰动等方面的优越性。; 适合人群:具备电机控制、现代控制理论及MATLAB/Simulink仿真基础的电气工程、自动化及相关专业的研究生、科研人员和工程技术人员。; 使用场景及目标:①解决永磁同步电机在无机械传感器条件下全速域运行的控制难题;②为高性能电机驱动系统(如电动汽车、精密伺服系统)提供可靠的速度位置估算方案;③深入理解高频注入、滑模观测器、多观测器融合平滑切换等先进控制算法的设计实现。; 阅读建议:此资源以Simulink仿真实现为核心,不仅提供了详细的算法原理模型架构,还包含了完整的运行结果分析。建议读者结合文中框架在MATLAB环境中动手复现仿真模型,重点关注不同速度区间下观测器的切换逻辑参数整定过程,并通过对比实验深入理解各模块的作用机理系统整体性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值