как правильно разделить файл по потокам?

задание:

создайте оконное приложение для копирования больших фалов. пользователь выбирает пути к исходному файлу и новому месту сохранения, а так же количество потоков для копирования, после нажатия старт начинается процесс копирования с отображением процесса через прогресс-бар

класс для считывания больших файла в нескольких потоках. сейчас в одном потоке копирует ,если потоков больше ломает файл. количество потоков задает пользователь. подскажите что я не правильно делаю, пожалуйста.

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); //запись буфера в файл           
         }
     }

 }

Ответы (0 шт):