偶发性错误,线程不安全处理方法 返回

SqlSugar 沟通中
3 279

已经参考该教程处理办法:https://www.donet5.com/Home/Doc?typeId=1224

想咨询一下大神

异步查询是否必须将方法定义为async Task

async Task的方法是否必须使用await才能保证线程安全

使用.Result方法等待以及.Wait()也可以做到等待,是否效果与await效果一致

热忱回答3

  • omgcwz omgcwz VIP0
    1个月前

    层层调用的方法是否都需要将方法定义为async Task

    还是只是调用数据库的那一层就行

    有些情况不希望将方法定义为异步的但请求存储或查询的方法是异步的

    0 回复
  • fate sta fate sta VIP0
    1个月前

    .Result方法等待以及.Wait() 这种是同步

    和await 效果完全不一样 ,虽然调试看着差不多 差距很大

    0 回复
  • omgcwz omgcwz VIP0
    1个月前

    @fate sta

    假设我有个这样的方法

     public async Task<SysConfig> GetByConfigKey(string category, string configKey)

     {

         var key = SystemConst.CACHE_DEV_CONFIG + category;//系统配置key

         var   config = await GetFirstAsync(it => it.Category == category && it.ConfigKey == configKey);//获取系统配置

         return config;

     }

    每个调用GetByConfigKey的方法都需要使用async Task定义方法并且使用await 进行同步等等,若将调用方法定义为非async Task就会导致线程异常

    有什么方法可以停止持续的异步,又能保证线程同步安全



    0 回复