난 내 ASP.NET MVC 응용 프로그램에서 사용할 필요가 오래된 데이터 액세스 라이브러리가 있지만 문제가 많은 서버 측 작업이 비동기가 될 것으로 예상되는 MVC의 세계로 데리고가 있어요.동기 호출을 비동기로 만들 때 TaskStatus를 반환하는 방법은 무엇입니까?
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
이 false 인 경우 TaskStatus.Faulted
를 반환 할 수 있도록하고 싶습니다하지만 온라인 제대로 작업을 수행하는 방법에 대한 예를 찾을 수 없습니다 - 내 모든 Google 검색이 출현은 IUserStore
인터페이스를 허용하지 않습니다 Task<T>
을 사용하는 방법입니다.
레코드와 마찬가지로 많이 변경할 수 없습니다 MyOldDAL
- .NET 3.5를 타겟팅하므로 async
또는 await
입니다!
'성공'이 '거짓'이면 예외를 던지지 않는 이유는 무엇입니까? –
방금 시도했는데 작동하지만 특히 우아한 방법처럼 보이지 않습니다! – Mourndark