как правильно разделить файл по потокам?
задание:
создайте оконное приложение для копирования больших фалов. пользователь выбирает пути к исходному файлу и новому месту сохранения, а так же количество потоков для копирования, после нажатия старт начинается процесс копирования с отображением процесса через прогресс-бар
класс для считывания больших файла в нескольких потоках. сейчас в одном потоке копирует ,если потоков больше ломает файл. количество потоков задает пользователь. подскажите что я не правильно делаю, пожалуйста.
internal class CopyFileInThread
{
string _newPath = string.Empty;
string _pathFile =string.Empty;
private Thread _thread;
int _step = 0;
byte[] _buffer;
int _threads = 0;
int indexGo;
public CopyFileInThread(string pathFile, string newPath, int cointThread) {
_pathFile = pathFile;
_newPath = newPath;
_threads = cointThread;
}
public void CopyFile() {
FileInfo fileInfo = new FileInfo(_pathFile);
// выделяем массив для считывания данных из файла
_buffer = new byte[fileInfo.Length];
_step = Convert.ToInt32(fileInfo.Length / Convert.ToInt64(_threads));
for (int i = 0; i < _threads; i++)
{
//создание нового потока
indexGo = i*_step;
_thread = new Thread(ThreadCopy );
_thread.Start();
}
SaveFile();
}
private void ThreadCopy() {
using (FileStream reader = File.Open(_pathFile, FileMode.Open, FileAccess.Read, FileShare.Read))
{
reader.Read(_buffer, indexGo, _step); //считывание блока байтов из файла
}
}
private void SaveFile() {
using (FileStream fstream = new FileStream(_newPath, FileMode.OpenOrCreate))
{
fstream.Write(_buffer,0,_buffer.Length); //запись буфера в файл
}
}
}