【发布时间】:2017-01-22 00:40:14
【问题描述】:
我有一个旧的数据访问库,我需要在我的 ASP.NET MVC 应用程序中使用它,但我无法将它带入 MVC 世界,在该世界中,许多服务器端操作预计是异步的。我的数据访问库如下所示:
public class MyOldDAL
{
public TaskResult CreateUser(string userName)
{
try
{
// Do user creation
return new TaskResult { Success = true, Message = "success" };
}
catch (Exception ex)
{
return new TaskResult { Success = false, Message = ex.Message };
}
}
}
并由我的 MVC 应用程序调用,如下所示:
public class MyUserStore : IUserStore<ApplicationUser>
{
private readonly MyOldDAL _dal = new MyOldDAL();
public async Task CreateAsync(ApplicationUser user)
{
await Task.Run(() => _dal.CreateUser(user.UserName));
}
}
这很好,直到Task.Run() 中的方法由于某种原因失败。如果TaskResult.Success 为假,我希望能够返回TaskStatus.Faulted,但我无法在网上找到如何正确执行此操作的示例-我所有的谷歌搜索都是如何使用Task<T>,@ 987654327@ 接口不允许。
为了记录,尽管我很想更改 MyOldDAL - 它的目标是 .NET 3.5,所以那里没有 async 或 await!
【问题讨论】:
-
如果
Success是false,为什么不抛出异常? -
我刚刚尝试过 - 它有效,但它似乎不是一种特别优雅的方式!
标签: c# .net asp.net-mvc async-await