간단한 트랜잭션을 구현해야했습니다. 이 경우 내 트랜잭션 클래스는 IDisposable 인터페이스를 구현합니다. 이렇게하면 using 문에서 트랜잭션 클래스를 사용할 수 있고 해당 범위 내에서 오류가 발생하면 트랜잭션이 처리 될 때 모든 것이 롤백됩니다. IDisposable.Dispose() 내에서 비동기 호출 사용
using (var transaction = new Transaction())
{
// do some stuff
}
는 "물건을"또한 오류를 제기 "어떤 물건을 할"경우 지금은 다시 모든 것을 롤 일부 클라이언트/서버 연결 등
이 포함되어 있습니다.
public async void Dispose(){ // roll back everything on error }
아마도 비동기 작업을 호출해야하는 서버의 일부 리소스를 정리해야합니다. 그 내 질문에 리드 : 내 Dispose() 구현을 위해 aswa 키워드를 사용하여 구현 내에서 await 키워드를 사용할 수 있습니까? 아니면 동기화 컨텍스트 문제 등으로 인해 경쟁 조건을 유발할 수 있습니까?
일부 흥미로운 내용은 http://blog.stephencleary.com/2013/03/async-oop-6-disposal.html – Gusdor