1
我有一個函數,它從目錄讀取每個文件並將其上載到數據庫。 我無法工作,如何等待任務完成它可以追溯到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();
}
我需要在繼續執行foreach循環之前,請等待MessageBox.show的位置。 清潔(任務)需要幾秒鐘的時間。 //MessageBox.Show("Complete!「); 部分。
謝謝。
嗨,感謝您,這看起來不錯,但我寧願保持這個項目.net 4.0和VS2010。 –
@Dan - 使用異步定位包*保持您的項目.NET4 * - 這就是整個想法。你不得不使用VS2012(或使用2010年的AsyncCTP,但不再支持) –
嗨,我不能得到.net4的建議工作,所以我強迫自己使用VS2012和.net4.5,它的工作原理一個治療的感謝。 –