private void button3_Click(object sender, EventArgs e)
{
Thread thread = null;
//為了不讓界面死掉,要将該操作放在一個線程中
thread = new Thread
(
() =>
{
//告訴系統不去檢測非法的跨線程調用
CheckForIllegalCrossThreadCalls = false;
//建立一個檔案流指向源檔案
FileStream fsRead = new FileStream(this.textBox1.Text, FileMode.Open);
//建立一個檔案流指向目标檔案
FileStream fsWrite = new FileStream(this.textBox2.Text, FileMode.Create);
//記錄一下該檔案的長度
long fileLength = fsRead.Length;
//定義一個1M的緩沖區
byte[] buffer = new byte[1024 * 1024];
//先讀取一次,并且将讀取到的真正内容長度記錄下來
int readLength = fsRead.Read(buffer, 0, buffer.Length);
//用來記錄已經将多少内容寫入到了檔案中
long readCount = 0;
//隻要讀取到的内容不為0就接着讀
while (readLength!=0)
{
//将前面已經讀取到記憶體中的資料寫入到檔案中
fsWrite.Write(buffer ,0,readLength);
//已經讀取的數量累加
readCount += readLength;
//計算已經讀取的資料百分比
int percentage =(int)( readCount * 100 / fileLength);
this.progressBar1.Value = percentage;
//進行下一次讀取
readLength = fsRead.Read(buffer, 0, buffer.Length);
}
fsRead.Close();
fsWrite.Close();
//清空緩沖區
buffer = null;
//回收一下記憶體
GC.Collect();
thread.Abort();
}
);
thread.Start();
}