繁体   English   中英

在vb2005中对文件流进行多线程处理

[英]Multithreading a filestream in vb2005

我正在尝试为网站建立一个资源文件,基本上将所有图像都压缩到一个压缩文件中,然后将其解压缩到客户端的输出缓冲区中。

我的问题是在vb2005中,如果您知道转换后的文件的大小(例如有点洪流)并处理文件流的各个部分(在这种情况下为单个文件),然后将它们添加到资源文件流中,则文件流可以是多线程的吗?完成一次而不是一次?

如果您需要类似于洪流写入文件的方式,这就是我要实现的方式:

  1. 在线程T1上打开FileStream,并为步骤2创建一个队列“监视器”
  2. 创建一个将从T1读取但由多个网络读取器线程写入的队列。 (队列数据结构如下所示:(写入位置,数据缓冲区的大小,数据缓冲区)。
  3. 启动线程

:)

无论如何,从您的评论来看,您的问题似乎是另一个问题。

我发现了一些东西,但不确定是否可行:

如果要将数据写入文件,可以使用两个并行方法WriteByte()Write() WriteByte()将单个字节写入流:

byte NextByte = 100;
fs.WriteByte(NextByte);

另一方面, Write()写出字节数组。 例如,如果使用某些值初始化了前面提到的ByteArray ,则可以使用以下代码写出数组的前nBytes:

fs.Write(ByteArray, 0, nBytes);

来自:

Nagel,Christian,Bill Evjen,Jay Glynn,Morgan Skinner和Karli Watson。 “第24章-操作文件和注册表”。 带有.NET 3.0的专业C#2005。 Wrox新闻。 ©2007。Books24x7。 http://common.books24x7.com/book/id_20568/book.asp(2009年 7月22日访问)

我不确定您是否在询问是否可以以多线程方式读取或写入System.IO.FileStream对象。 但是在两种情况下答案都是“否”。 这不是受支持的方案。 您将需要添加某种形式的锁定,以确保对资源的序列化访问。

该文档将对对象的多线程访问称为不支持的方案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM