因此,在下面的片段中,我非常簡單地查看特定文件夾並將圖像從源文件複製到目標文件。進度條凍結部分路徑
副本速度非常快,對於需要幾秒鐘的第一批文件夾(大概20個左右)來說,它的效果非常好。但隨後進度條停止移動,我得到一個旋轉的鼠標光標。我可以查看目標文件夾,它仍在處理文件夾。
當它完成後,我得到「過程完成」對話框,進度條是100%,一切運行良好。
只是想確保最終用戶不認爲它被凍結。
private void readInvoices()
{
string InvoiceFile = txtInvoiceFile.Text;
//read in the text file and get all the invoices to copy
string[] Invoices = File.ReadAllLines(InvoiceFile);
//set the max val of the progress bar
progBar.Maximum = Invoices.Length;
try
{
//for every invoice
foreach (string invoice in Invoices)
{
//Set the source and destination directories
string sourceInvFolder = string.Format(@"{0}\{1}", txtSource.Text, invoice);
string destInvFolder = string.Format(@"{0}\{1}", txtDest.Text, invoice);
DirectoryInfo SourceDI = new DirectoryInfo(sourceInvFolder);
DirectoryInfo DestDI = new DirectoryInfo(destInvFolder);
//we know we have it in the CSV but does the directory actually exist?
//if so then let's process
if (Directory.Exists(SourceDI.FullName) == true)
{
//let's copy of the files
CopyAll(SourceDI, DestDI);
RenameFolder(sourceInvFolder);
}
//inc the progress bar
progBar.Increment(1);
}
}
catch (Exception ex)
{
MessageBox.Show("Error" + ex.Message);
}
finally
{
MessageBox.Show("Process Complete");
CleanUp();
}
}
我的猜測是你正在UI線程中完成所有這些工作。那肯定會凍結一些東西。儘管目前我們還不能確定,因爲我們無法確定您是如何稱呼您的方法的。一般來說,不要在UI線程中做繁重的工作。 –