c#确保所有操作完成或无

时间:2017-04-02 14:44:33

标签: c# rollback

我有以下代码:

File.Copy(pathSource, pathDestination);   //copy file
ID3v2TagToDB(pathSource, pathDestination); //read his tags and save them to DB
ID3v2TagToTXT(pathSource, pathDestination); //read his tags and save them to txt
dgv.Rows[chosen[i]].DefaultCellStyle.BackColor = Color.GreenYellow; //color green datagridview row if copy and read successfull

我想确保每项操作都成功。如果其中任何一个失败,我需要回滚以前的所有内容。

并且还警告用户发生的错误以及发生的操作。

2 个答案:

答案 0 :(得分:0)

没有内置方法可以做到这一点。您需要考虑应用程序的功能,并提供撤消每个操作的方法。

例如,您可以删除复制的文件,删除插入的行,同样删除写入文件的文本。

查看异常处理

答案 1 :(得分:0)

我建议您实现.NET两阶段提交资源管理器。当DTC组件调用逻辑来回滚您的更改时,RM可以为您对文件系统进行的每次更改保存备份文件。您可以还原先前创建的备份文件。

Check out this documentation

使用TxF和KTM会对herehere所述有所帮助,因为已在Vista + Windows版本中实现。

TxF(事务性文件系统)使用NTFS格式。 Win32 API合同没有更改,这是一个很好的选择。因为通过.NET Framework公开的IO的所有API都是相同的。您只需要直接调用几个Win32 API,您就可以获得Windows中包含的这一新功能的所有好处。使用DTC将允许您跨文件系统和数据库执行事务性工作。因此,如果出现错误,所有更改都将在数据库和文件系统中回滚。