如何在getter中获取异步结果?

时间:2019-06-08 16:07:53

标签: c# asynchronous async-await

在此实现中,我的存储库中有一个方法可以返回任务

Task<IList<ApplicationDTO>> GetAllAppsRequestAsync(); 

我编写了调用此异步方法的getter

public IList<ApplicationPropertyModel> ApplicationsList
    {
        get
        {
            IList<ApplicationDTO> applicationDTO = _appService.GetAllAppsRequestAsync();
            if (applicationDTO != null)
            {
                applicationList = mapper.DefaultContext.Mapper.Map<IList<ApplicationPropertyModel>>(applicationDTO);
            }

            return applicationList;
        }
        set => Set(ref applicationList, value);
    }
  

_appService.GetAllAppsRequestAsync();-返回任务,并发现getter没有异步

我尝试编写委托,在映射模型时遇到问题。

我试图找到一些东西,但是无论我做什么,我都会死锁或者不等待任务执行结果。(尝试getAwaiter,等待,例如包装示例)并且不知道该怎么办?

忘了我尝试这样做

public static void RunSync(Func<Task> func)
{
    AsyncHelper._myTaskFactory
      .StartNew<Task>(func)
      .Unwrap()
      .GetAwaiter()
      .GetResult();
}

但在项目完成之前不接受结果

节点

我应该使用该属性,因为它与wpr xaml页面中的itemControl绑定。

修改

private async Task<IList<ApplicationPropertyModel>> TakeAppListAsync()
    {
        IList<ApplicationDTO> applicationDTO = await _appService.GetAllAppsRequestAsync();

        if (applicationDTO != null)
        {
            applicationList = mapper.DefaultContext.Mapper.Map<IList<ApplicationPropertyModel>>(applicationDTO);
        }

        return applicationList;
    }

0 个答案:

没有答案