当前位置: 首页 > wzjs >正文

美食网站设计的代码百度竞价关键词优化

美食网站设计的代码,百度竞价关键词优化,网站流量劫持怎么做,做一钓鱼网站吗同步和异步的关键区别:同步方法会阻塞线程,而异步方法在 await 时释放线程,让它可以处理其他任务。 await 操作符的作用:当遇到 await 时,当前方法会暂停,线程返回线程池,等待任务完成后再继续…

同步和异步的关键区别:同步方法会阻塞线程,而异步方法在 await 时释放线程,让它可以处理其他任务。

await 操作符的作用:当遇到 await 时,当前方法会暂停,线程返回线程池,等待任务完成后再继续执行。

异步方法不会增快程序处理的速度,只会提高处理程序的数量。

异步方法通常用于那些耗时较长的操作,避免阻塞主线程,提高系统响应速度。


ERP 中适合用异步方法的场景

  • 耗时操作:如批量数据导入 / 导出、复杂报表生成、大数据分析(如销售趋势预测)。
  • 非即时性需求:如夜间自动备份数据、定期发送供应商对账邮件、批量更新商品库存。
  • 高并发场景:当多个用户同时触发耗时操作时,异步方法可避免系统因压力过大而崩溃。

 这些操作如果用同步方法,用户可能需要长时间等待,影响体验。而异步的话,可以让用户继续操作其他功能,后台处理这些任务。

异步方法的好处:提高用户体验,系统资源利用率更高,不会因为一个耗时操作影响整个系统的性能。

异步的实现方式:使用队列、回调函数或者消息机制。


在 ERP 系统中,即使需要等待操作结果,也可能选择异步方法而非同步方法,主要基于以下原因:

1. 避免线程阻塞,提升系统吞吐量

2. 改善用户体验,等待期间系统保持响应

3. 与其他异步组件集成

4. 资源管理更灵活

  • 同步方法:长时间占用线程资源,可能导致资源浪费。
  • 异步方法:可结合超时控制、取消令牌(CancellationToken)等机制,更精细地管理资源。

 


异步方法(优化做法)
  • 操作流程

    1. 会计点击 “生成 6 月财务总览报表” 按钮后,系统立即返回提示:“报表正在生成中,您可以继续其他操作。”
    2. 后台异步处理
      • 系统将报表生成任务放入 “任务队列”,并启动独立的线程或进程处理数据查询和计算。
      • 此时,用户可以继续在 ERP 中处理采购订单、审核报销单等其他任务,界面操作完全不受影响。
    3. 当报表生成完成后,系统通过弹窗、短信或邮件通知会计:“6 月财务报表已生成,可随时查看。”
  • 优势

    • 用户体验提升:无需等待耗时任务完成,可并行处理多项工作。
    • 系统效率更高:资源不会被单一任务阻塞,多个任务可同时推进(如一边生成报表,一边处理订单)。


 

Task.Delay 是一个异步方法,它会让当前的执行流程暂停指定的时间,同时不会阻塞线程。await Task.Delay(5000) 会让程序暂停 5 秒钟,在这期间,线程可以去处理其他任务,而不是一直处于阻塞状态。

  • 当代码执行到 await Task.Delay(5000) 时:
    1. 暂停当前方法:方法执行流在此处暂停,但不阻塞线程
    2. 线程返回线程池:当前线程(可能来自线程池)被释放,可用于处理其他任务。
    3. 后台调度等待Task.Delay 会注册一个定时器,5 秒后通知系统继续执行后续代码。
  • 等待完成后,系统从线程池获取一个可用线程,继续执行 await 后的代码。

设计目的:避免无效检查和资源浪费

  • 场景合理性:账套恢复(如数据库还原、服务重启)属于耗时操作,不可能瞬间完成。直接检查状态会得到 “未开始” 或 “进行中” 的结果,导致无效判断。
  • 性能优化:通过定时等待(而非高频循环),减少对数据库或服务的无效查询,降低资源消耗。
  • 兼容性考虑:远程服务(如 WCF、API)可能存在响应延迟,等待时间为操作预留了执行窗口。

使用回调函数替代轮询

场景:账套恢复完成后自动触发后续操作,无需手动检查状态。
实现方式
  • 步骤 1:定义回调委托。
  • 步骤 2:在异步方法中注册回调。
  • 步骤 3:状态变化时(如恢复成功)触发回调。
// 定义回调委托
public delegate void RecoveryStatusChangedHandler(string packageNo, int status);public class PresentiveAccountSetMaintainer
{// 事件:状态变化时触发public event RecoveryStatusChangedHandler OnRecoveryStatusChanged;public async Task StartRecoveryAsync(int reservedAsId, int adminUserSn, string packageNo){using (var client = AccServiceFactory.GetErpBackupEngineAdapter(AppSettings.ScmType)){// 启动恢复操作client.RecoveryErpProxy(reservedAsId, adminUserSn, true, packageNo);// 异步等待恢复完成await MonitorRecoveryStatusAsync(packageNo, TimeSpan.FromSeconds(30));}}private async Task MonitorRecoveryStatusAsync(string packageNo, TimeSpan timeout){var startTime = DateTime.Now;while (DateTime.Now - startTime < timeout){var status = CheckRecoveryStatus(packageNo);// 触发状态变化事件OnRecoveryStatusChanged?.Invoke(packageNo, status);// 如果恢复成功,退出循环if (status == 2){return;}// 如果正在恢复,等待一段时间后继续检查if (status == 3){await Task.Delay(5000);continue;}// 如果恢复失败,抛出异常if (status == 1){throw new Exception($"账套恢复失败,包编号:{packageNo}");}}// 超时处理throw new TimeoutException($"账套恢复超时,包编号:{packageNo}");}
}
var maintainer = new PresentiveAccountSetMaintainer();// 注册回调
maintainer.OnRecoveryStatusChanged += (packageNo, status) =>
{switch (status){case 2: // 恢复成功Console.WriteLine($"账套 {packageNo} 恢复成功!");// 自动触发后续操作(如数据校验)ValidateAccountData(packageNo);break;case 3: // 正在恢复Console.WriteLine($"账套 {packageNo} 正在恢复中...");break;case 1: // 恢复失败Console.WriteLine($"账套 {packageNo} 恢复失败!");break;}
};// 启动恢复
await maintainer.StartRecoveryAsync(reservedAsId, adminUserSn, packageNo);

http://www.dtcms.com/wzjs/32075.html

相关文章:

  • 有没有专门做衣服搭配的网站陕西网站关键词自然排名优化
  • 下载类网站开发条件北京网站优化步
  • 企业怎么做推广新网站 seo
  • 阿里企业邮箱app好搜seo软件
  • 建网站做代理ip市场推广seo职位描述
  • 专业的网站建设企业好推建站
  • 企业全称网站杭州网站排名seo
  • 福州微信网站开发seo排名系统源码
  • 株洲网站制作公司2023搜索最多的关键词
  • 望京网站建设公司搜索大全引擎
  • 三合一网站建设方案推广链接点击器网页
  • 重庆南岸网站建设qq推广软件
  • 牛商网 做的p2p网站西安网页设计
  • 上海网站建设制作公司国内网络营销公司排名
  • 福建厦门网站建设网站策划书
  • 学网站建设的软件seo教程 百度网盘
  • 初学者wordpress商城模板企业seo优化
  • flash代码做网站教程我想在百度发布信息
  • 南宁网站seo游戏推广怎么做
  • 经典网站欣赏百度搜索风云榜下载
  • 网站 配色表最近有新病毒出现吗
  • wordpress帝国cms谷歌优化工具
  • 网站建设价格a去找真甲先生媒体宣传推广方案
  • 织梦做的网站图片路径在哪里自己建网站需要钱吗
  • 相亲网站男人拉我做外汇seo数据是什么意思
  • 文化网站前置审批seo快速排名源码
  • 阜宁网站制作费用百度关键词推广工具
  • 购物网站常用的多组图左右轮播的js图片特效代码矿产网站建设价格
  • 犀牛云做网站外贸企业网站推广
  • windows 建设网站国内新闻摘抄2022年