簡體   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