ASP NET MVC 5任务异步创建异步方法

卡勒姆·林宁顿

所以我只想做我的服务层async

我有一个新服务ProjectManagement,我希望它的GetProjects方法是异步的。

public Task<string> GetProjectsAsync()
{
    var json = JsonConvert.SerializeObject(_repository.All<Projects>());

    return json;
}

我知道此方法无效,显然是因为我返回的是字符串,而不是Task<string>那么如何使用Task.Run()来运行此方法并返回结果?

我看了这份文档,对如何使用它有点困惑?

我想要在控制器中做的就是:

var jsonData = await _projectManagement.GetProjectsAsync();
斯蒂芬·克莱里

转换为时async,您要从“叶子”开始并朝着控制器/ UI方向工作。我做了很多转换,这是我发现的最好方法。

因此,首先确定任何自然异步的操作;任何受I / O约束的事情都是不错的选择。您已经确定了一个:数据库调用。

接下来,从最低级别的代码开始,并使其异步。这就是您的问题所在。您正在考虑使用来在中间强制异步Task.Run,但是您需要更深入地研究并使其完全异步。

例如,我假设您的存储库正在使用Entity Framework,并且您的All<T>方法如下所示:

public List<T> All<T>()
{
  return _context.Set<T>().ToList();
}

然后,您将从制作此存储库方法的异步版本开始:

public Task<List<T>> AllAsync<T>()
{
  return _context.Set<T>().ToListAsync();
}

一旦至少有一个异步存储库方法,就可以开始将服务层更改为异步,因此代码如下:

public string GetProjects()
{
  var json = JsonConvert.SerializeObject(_repository.All<Projects>());
  return json;
}

变成这个:

public async Task<string> GetProjectsAsync()
{
  var json = JsonConvert.SerializeObject(await _repository.AllAsync<Projects>());
  return json;
}

一旦服务层是异步的,则可以将控制器更改为异步。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ASP .NET MVC 5中的异步任务

来自分类Dev

asp.net mvc 5异步操作方法

来自分类Dev

ASP.NET MVC中的异步方法

来自分类Dev

Asp.net mvc5。异步等待。等待具有diff返回类型的任务

来自分类Dev

在ASP.Net MVC中使用异步

来自分类Dev

ASP中的异步Web服务。NET MVC

来自分类Dev

ASP中的异步Web服务。NET MVC

来自分类Dev

在 ASP.Net-MVC 中使用异步

来自分类Dev

如何使ASP.NET MVC控制器方法异步

来自分类Dev

Asp.Net MVC,WebApi和正确的异步方法

来自分类Dev

异步方法在ASP.NET(MVC)中在哪里执行?

来自分类Dev

在ASP.NET MVC中触发并忘记异步方法

来自分类Dev

Asp.Net MVC,WebApi和正确的异步方法

来自分类Dev

异步方法在ASP.NET(MVC)中在哪里执行?

来自分类Dev

ASP.NET MVC在Controller中异步实现的最佳方法

来自分类Dev

使ASP.net MVC 5路由忽略Action方法上的异步后缀

来自分类Dev

在ASP.NET MVC5中调用异步方法时无法等待'long'

来自分类Dev

ASP.NET MVC,ajax请求未异步处理

来自分类Dev

早期访问异步操作会导致ASP.NET MVC

来自分类Dev

最佳ASP.NET MVC异步更新模式

来自分类Dev

与MVC3和ASP.NET4.5异步

来自分类Dev

asp.net 5与asp.net mvc是否不同?

来自分类Dev

ASP MVC上的异步

来自分类Dev

在ASP.NET MVC中创建SiteMap

来自分类Dev

在ASP.NET/MVC/REST中使用异步库的正确方法

来自分类Dev

ASP.NET 5和MVC的目的

来自分类Dev

ASP.Net MVC 5 + SignalR + Ninject

来自分类Dev

ASP.Net MVC 5中的Cookie

来自分类Dev

是否发布了ASP.NET MVC 5?