로깅 라이브러리를 만들었고 DB에 항목을 만들 때 로그 메서드가 오류 번호 (PK)를 반환합니다.이 번호는 사용자에게 오류 메시지의 일부로 알립니다. UI. 그들은 팀을 지원하기 위해 말할 때 그 열쇠를 참고 자료로 사용합니다.비동기 메서드에서 비동기 라이브러리 메서드 사용
그리고는 다음과 같은 작업을 수행하는 비동기 방법이 있습니다
public class Logger
{
public async Task<string> LogAsync(Exception ex)
{
return await DoLogAsync(ex);
}
// some private method, with multiple optional parameters
private Task<string> DoLogAsync(Exception ex)
{
return Task.Run(() => Log(ex));
}
}
참고 : 나는 인정이 비동기 버전은 아무것도 단순히 동기 방법, 로그 (랩), 작업에 .운영. 나는 확실하지 않다, 그 밖의 무엇이하게되어야한다!
지금, 나는 아래처럼 내 모든 API를 위의 로그() 메소드를 사용하는 계획입니다 :
public Result<MyObject> Get()
{
var result = new Result<MyObject>();
try
{
throw new DivideByZeroException();
}
catch (DivideByZeroException ex)
{
string errorId = await _logger.LogAsync(ex);
response.AddErrorMessage("Please Contact Admin with this error #"+errorId);
}
return result;
}
일 이상으로 만들기 위해, 나는 API 방식 비동기을해야, 로거 호출을 기다리고 있기 때문입니다.
- 로거 용으로 API 호출을 비동기로 변경하지 않으려면 어떻게해야합니까? 이 작품을 만들 수있는 다른 가능성은 무엇입니까?
LogAsync()
이 실제로 도움이 될 것이라고 생각하십니까? 내 UI 스레드가 오류 번호가 반환되기를 기다리는 중입니다. 그렇다면 동기화 메서드를 호출하지 않는 이유는 무엇입니까?Log()
메쏘드가 거의 없습니다. 오류 번호가 필요하지 않습니다. 그 대신에 일종의 로그 - 앤 - 포겟 (log-and-forget)입니다. UI가 아무 것도 기대하지 않기 때문에 이러한 시나리오에서 비동기 버전이 도움이 될 것이라고 생각하십니까?
답변 : 질문 1에 대한은,이 작품 : Waiting for async/await inside a task
2 또한, 3 가지는 ADO.Net 구현 오히려 Task.Run
보다는
이 웹 응용 프로그램입니다 같은? – JohanP
은 C# ... 중순에 태그를 넣어주세요 :) – ymz
C#은 언어입니다. ASP.Net 응용 프로그램과 웹 API에 C#을 사용할 수 있습니다. – JohanP