2017-04-02 1 views
-1

것은 내가 다음 코드 없었다 :C#을 모든 작업을 완료 할 수 있도록하거나 아무도

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 

내가 각각의 작업이 성공적인 있는지 확인하고 싶습니다. 그 중 하나라도 실패하면 이전의 모든 것을 롤백해야합니다.

또한, 상품 발생했습니다 발생했습니다 오류 및 작업에 대한 사용자에게 경고.

+0

비슷한 목적으로 예외 메커니즘을 사용할 수 있습니다. (어쩌면 .net에 다른 방법이 있습니다) – LmTinyToon

+0

유품 패턴에 대한 좋은 후보가 아닌가요? – FCin

+0

@FCin memento는 객체의 상태 지속성과 관련이 있습니다. 이 경우 질문은 트랜잭션 작업 그 자체에 초점을 맞 춥니 다. –

답변

0

.NET 2 단계 커밋 리소스 관리자를 구현하는 것이 좋습니다. RM은 DTC 구성 요소가 변경 내용을 롤백하기위한 논리를 호출 할 때 파일 시스템에 대한 변경 사항마다 백업 파일을 저장할 수 있습니다. 이전에 작성한 백업 파일을 복원 할 수 있습니다. herehere 설명 된대로 이미 비스타 + 윈도우 버전에서 구현되기 때문에, 당신에게 도움이 될 TXF와 KTM을 사용하여

Check out this documentation

.

TxF (트랜잭션 파일 시스템)는 NTFS 형식으로 작동합니다. Win32 API 계약은 변경되지 않았으므로 훌륭한 옵션입니다. IO의 모든 API, .NET Framework를 통해 노출되기 때문에 동일합니다. 몇 가지 Win32 API를 직접 호출하면 Windows에 포함 된이 새로운 기능의 모든 이점을 얻을 수 있습니다. DTC를 사용하면 파일 시스템과 데이터베이스간에 트랜잭션 작업을 수행 할 수 있습니다. 따라서 오류가 발생하면 모든 변경 사항이 데이터베이스와 파일 시스템 전체에서 롤백됩니다.

0

에는이 작업을 수행하는 방법에 내장이 없습니다. 애플리케이션이하는 일에 대해 생각하고 각 작업을 실행 취소하는 방법을 제공해야합니다.

예를 들어, 복사 한 파일을 삭제할 수 있으며 삽입 한 행을 삭제할 수 있으며 작성한 텍스트를 삭제할 수 있습니다.

예외 처리 찾아보기

+0

이 대답은 솔루션이나 설명서를 가리 키지 않습니다. –

관련 문제