在vb2005中多线程处理文件流

时间:2009-07-22 04:58:39

标签: vb.net

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

我的问题是在vb2005中,如果你知道转换文件的大小,文件流是多线程的,ala就像有点洪流,并处理文件流的部分(在这种情况下是单个文件)并将它们添加到资源文件流何时完成而不是一次?

2 个答案:

答案 0 :(得分:1)

如果你需要类似于torrents写入文件的方式,这就是我实现它的方式:

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

    无论如何,从您的评论中,您的问题似乎是另一个......

    我找到了一些东西,但我不确定它是否有效:

      

    如果要将数据写入文件,   可以使用两种并行方法,   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   沃森。 “第24章 - 操纵   文件和注册表“。专业   C#2005 with .NET 3.0。 Wrox出版社。 ©   2007. Books24x7。 http://common.books24x7.com/book/id_20568/book.asp   (2009年7月22日访问)

答案 1 :(得分:0)

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

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