나는 다음과 같은 조치를 트리거하는 버튼으로 윈도우 폼 응용 프로그램이 조건이 거짓 (documentsView.CheckedItemsCount
이 0 임) 인 경우에도 작업이 여전히 실행됩니다. 그러나 작업이 완료되면 MessageBox에서 "하나 이상의 문서를 선택하십시오."라는 메시지가 나타납니다. 도움이된다면C# 작업 제어 흐름 논리 제대로 작동하지
는 TimeStampPdfs
방법은 다음과 같습니다 메시지 상자가 표시됩니다 "파일이에 ... 인쇄 스크립트에 타임 스탬프와 함께 저장"때문에
private System.Threading.Tasks.Task TimeStampPdfs() => System.Threading.Tasks.Task.Run(() =>
{
for (int i = 0; i < documentsView.CheckedItems.Count; i++)
{
var currentDocument = documentsView.CheckedItems[i].ToString();
if (!string.Equals(
System.IO.Path.GetExtension(currentDocument), ".pdf", System.StringComparison.InvariantCultureIgnoreCase))
{
currentDocument = ConvertToPdf(currentDocument);
}
TimeStampPdf(currentDocument);
Report(new ProgressReport
{
Total = documentsView.CheckedItems.Count,
CurrentCount = i + 1
});
}
}).ContinueWith(t =>
{
System.Windows.Forms.MessageBox.Show("Files saved with time-stamp on print script in " + OutputRootPath);
},
System.Threading.CancellationToken.None,
System.Threading.Tasks.TaskContinuationOptions.OnlyOnRanToCompletion,
System.Threading.Tasks.TaskScheduler.FromCurrentSynchronizationContext()
);
나는 그것을 실행 것을 알고있다.
'TimeStampPdf'가 void 메소드로 정의되었지만 반환 값 (?) *을 사용하여 'PerformTask'를 호출했기 때문에이 방법도 컴파일되지 않습니다. – sstan
또한 호출 할 때'string'을'TimeStampPdf'에 건네주지 않습니다. – juharr
@sstan 죄송합니다, 잘못된 방법을 게시했습니다. 나는 비슷한 이름을 가진 두 명을 가지고 있으며 서두르지 말고 부주의 한 실수를 저질렀습니다. 이제 올바른 방법이 문제가되었습니다. –