我需要实现一个简单的事务。为此,我的事务类实现了IDisposable接口。这样,我可以在using语句中使用我的事务类,如果在该范围内发生任何错误,则当事务被处理时,所有内容都会回滚。
using (var transaction = new Transaction())
{
// do some stuff
}
"do some stuff"也包括一些客户端/服务器连接等操作。
如果"do some stuff"出现任何错误,现在我会回滚所有操作。
public async void Dispose(){ // roll back everything on error }
这可能包括在需要调用异步操作的服务器上清理一些资源。这引出了我的问题:我可以安全地只使用async关键字来实现Dispose()以在其实现中启用await关键字吗?或者这可能会由于同步上下文问题等原因导致竞争条件?