操作多线程向一个文件写数据
try
{
int ThreadIndex = Convert.ToInt32(threadIndex);
sw.Start();
FileStream fs = new FileStream(this.filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
BinaryReader br = new BinaryReader(fs);
FileStream nfs = new FileStream(this.NewFilePath, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
BinaryWriter bw = new BinaryWriter(nfs);
int ReadedLength;
byte[] buffer = new byte[EachFileSize[ThreadIndex]];
fs.Seek(FilePosition[ThreadIndex], SeekOrigin.Begin);
ReadedLength = br.Read(buffer, 0, EachFileSize[ThreadIndex]);
nfs.Seek(FilePosition[ThreadIndex], SeekOrigin.Begin);
bw.Write(buffer, 0, ReadedLength);
sw.Stop();
fs.Close();
nfs.Close();
br.Close();
bw.Close();
MessageBox.Show(ThreadIndex.ToString() + "done");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
private int[] FilePosition;//每个线程开始位置;
private int[] EachFileSize;//每个线程应读取的大小;
问题:
程序没有异常,但是文件头部分都是空值,EachFileSize倍数(随机)的部分总是空值,不知道是什么原因?
Mutex也没有用
但设成1个线程没有问题。