感谢大家抽出时间解决我这个问题,综述:
1、单线程下载测试OK;
2、多线程下载每个线程跟踪发现下的文件块【开始、结束】位置相同
3、多线程下载线程合并和文件合并OK,所以如果要下一个文本文件内容为:
I'm a Programmer 得到的文本将为: I'm a PrI'm a Pr
/***********************文件分割***********************/
……省略,经检查和临时文件输出,发现无问题……
/***********************部分源码***********************//***********************块下载(每个线程中都要执行的部分)***********************/
((HttpWebRequest)_Request).AddRange((int)this.Start,(int)this.MaxSize+(int)this.Start-1);
mSourceStream = _Request.GetResponse().GetResponseStream();byte[] buff = new byte[1024];
int currentSize = mSourceStream.Read(buff , 0 ,buff.Length);
while (mBytesFinished+currentSize <= this.MaxSize
&¤tSize>0)
{
TargetStream.Write(buff, 0, currentSize);
mBytesFinished += currentSize;
currentSize = mSourceStream.Read(buff , 0 ,buff.Length);}
if (mBytesFinished+currentSize>this.MaxSize)
{
TargetStream.Write(buff, 0, (int)(this.MaxSize-mBytesFinished));
mBytesFinished += (this.MaxSize-mBytesFinished);
currentSize = mSourceStream.Read(buff , 0 ,buff.Length);
}
mRequest.Abort();
mFinished = true;
/***********************部分源码***********************//***********************合并***********************/
……无问题……
/***********************部分源码***********************/提问:((HttpWebRequest)_Request).AddRange((int)this.Start,(int)this.MaxSize+(int)this.Start-1);
这句执行了请求的文件内容根本没有偏移,如何解决?
1、单线程下载测试OK;
2、多线程下载每个线程跟踪发现下的文件块【开始、结束】位置相同
3、多线程下载线程合并和文件合并OK,所以如果要下一个文本文件内容为:
I'm a Programmer 得到的文本将为: I'm a PrI'm a Pr
/***********************文件分割***********************/
……省略,经检查和临时文件输出,发现无问题……
/***********************部分源码***********************//***********************块下载(每个线程中都要执行的部分)***********************/
((HttpWebRequest)_Request).AddRange((int)this.Start,(int)this.MaxSize+(int)this.Start-1);
mSourceStream = _Request.GetResponse().GetResponseStream();byte[] buff = new byte[1024];
int currentSize = mSourceStream.Read(buff , 0 ,buff.Length);
while (mBytesFinished+currentSize <= this.MaxSize
&¤tSize>0)
{
TargetStream.Write(buff, 0, currentSize);
mBytesFinished += currentSize;
currentSize = mSourceStream.Read(buff , 0 ,buff.Length);}
if (mBytesFinished+currentSize>this.MaxSize)
{
TargetStream.Write(buff, 0, (int)(this.MaxSize-mBytesFinished));
mBytesFinished += (this.MaxSize-mBytesFinished);
currentSize = mSourceStream.Read(buff , 0 ,buff.Length);
}
mRequest.Abort();
mFinished = true;
/***********************部分源码***********************//***********************合并***********************/
……无问题……
/***********************部分源码***********************/提问:((HttpWebRequest)_Request).AddRange((int)this.Start,(int)this.MaxSize+(int)this.Start-1);
这句执行了请求的文件内容根本没有偏移,如何解决?
解决方案 »
- xtraReport打印的问题
- 急急急!如何读取新增文件(txt,空格分开)中的内容并将其插入到数据库中
- 请问,在form2中怎样访问form1的控件
- 请教一下用语言怎么对Access数据进行压缩
- c#删除失败
- 关于DataGrid!如何调整编辑框的大小!帮帮我啊!!!
- 求大神如何用GridView在页面显示数据库中的信息
- 怎样让控件全部绘制完了再一起显示出来,避免闪烁
- 高手请进!急诊:Repeater嵌套绑定问题.在线等
- sos!!!怎样在点击按钮时改变它的style再点击其他的按钮是该按钮又恢复它原来的style
- 请问:.net应用程序发布时候检测.netFrameWork的问题
- 远程监视桌面~清空所有求源码
下载看源码