using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.IO;
namespace CopyFileDemo
{
public partial class CopyProgressForm : Form
{
string destFile, srcFile;
public CopyProgressForm(string destFile, string srcFile)
{
InitializeComponent();
Control.CheckForIllegalCrossThreadCalls = false;
this.destFile = destFile; // 要复制的源文件名称
this.srcFile = srcFile; // 要复制到的目标文件名称
}
private void CopyProgressForm_Load(object sender, EventArgs e)
{
this.Show();
// 在此处创建多线程复制文件
Thread thread = new Thread(new ThreadStart(this.CopyProcess));
thread.IsBackground = true;
thread.Start();
}
void CopyProcess()
{
FileStream src = null,dest = null;
try
{
src = new FileStream(this.srcFile, FileMode.Open, FileAccess.Read, FileShare.Read);
dest = new FileStream(this.destFile, FileMode.Create, FileAccess.Write, FileShare.None);
long size = src.Length;
long currBytes = 0;
byte[] buffer = new byte[1024];
int length = 0;
do
{
length = src.Read(buffer, 0, buffer.Length);
currBytes += length;
this.pgrProgress.Value = (int)(currBytes * 100 / size);
dest.Write(buffer, 0, length);
}
while (length != 0);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
if (src != null)
src.Close();
if (dest != null)
dest.Close();
this.Close();
}
}
private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}
}
}