zoukankan      html  css  js  c++  java
  • 走进异步编程的世界--async/await项目使用实战

    起因:今天要做一个定时器任务:五分钟查询一次数据库发现超时未支付的订单数据将其状态改为已经关闭(数据量大约100条的情况)

    开始未使用异步:

     public void SelfCloseGpPayOrders()
            {
                try
                {
                    var list =db.GpPayOrders.Where(a => a.PaymentStatus == 0).ToList();
                    foreach (var item in list)
                    {
                        if(item.AddTime.AddHours(2) < DateTime.Now)
                        {
                            item.PaymentStatus = 4;
                            item.Remark = "长时间未支付自行关闭订单";
                            db.Entry(item).State = EntityState.Modified;
                            db.SaveChangesAsync();
                            NLogHelp.WriteInfo("长时间未支付自行关闭订单,订单支付号:"+item.MerOrderId);
                        }
                    }
                    //return "success";
    
                }
                catch (Exception)
                {
                    //return e.InnerException.Message;
                }
            }

    执行后发现每次更改两三次就不执行了,应该就是线程阻塞了,所以改成了异步

     public async void SelfCloseGpPayOrders()
            {
                try
                {
                    var list =await db.GpPayOrders.Where(a => a.PaymentStatus == 0).ToListAsync();
                    foreach (var item in list)
                    {
                        if(item.AddTime.AddHours(2) < DateTime.Now)
                        {
                            item.PaymentStatus = 4;
                            item.Remark = "长时间未支付自行关闭订单";
                            db.Entry(item).State = EntityState.Modified;
                            await db.SaveChangesAsync();
                            NLogHelp.WriteInfo("长时间未支付自行关闭订单,订单支付号:"+item.MerOrderId);
                        }
                    }
                    //return "success";
    
                }
                catch (Exception)
                {
                    //return e.InnerException.Message;
                }
            }

    修改之后。瞬间几百条数据更改完了,没有遗漏!

    附录:

    走进异步编程的世界-开始接触async/await

  • 相关阅读:
    java中排序算法
    maven常用命令
    Team_GJX模板整理
    BZOJ 4128
    BZOJ 1169: [Baltic2008]Grid
    Codeforces Round #448 (Div. 2)
    HDU 5942
    2016 ICPC 沈阳
    2016 ICPC 北京
    2016 CCPC 杭州
  • 原文地址:https://www.cnblogs.com/yechangzhong-826217795/p/10288268.html
Copyright © 2011-2022 走看看