ディレクトリから各ファイルを読み取り、データベースにアップロードする機能があります。タスクがforeachループに戻る前に、タスクが終了するのを待つ方法を理解できません。タスクは数秒かかるため、すぐに実行されるようです。
foreach (string file in Directory.EnumerateFiles(folderPath, "*.xml"))
{
//load file
currentReader = new XmlDataReader(transferInstructions, file);
currentReader.RowsUploaded += new EventHandler<RowsUploadedEventArgs>(currentReader_RowsUploaded);
currentReader.TableUploaded += new EventHandler<TableUploadedEventArgs>(currentReader_TableUploaded);
currentTask = new Task(() => currentReader.executeBulkCopy(initialConnString, workingDatabase));
currentTask.ContinueWith(task =>
{
cleanUp(task);
//MessageBox.Show("Complete!");
});
currentTask.Start();
writeResult("Started the transfer process.");
cmdDataTransfer.Text = "CANCEL TRANSFER";
cmdDataTransfer.ForeColor = Color.DarkRed;
transferAction = () => cancelCurrentReader();
}
MessageBox.showがどこにあるかを待ってから、foreachループを続行する必要があります。cleanUp(task)に到達するのに数秒かかります。//MessageBox.Show("Complete!"); セクション。
ありがとう。