You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用VB.NET读取Windows假脱机文件时FileStream出现读取超时错误

解决Windows假脱机文件读取超时问题
  • 调整文件共享权限
    Windows假脱机文件通常会被打印服务占用,仅使用FileShare.Read会导致权限冲突。将共享模式改为FileShare.ReadWrite或FileShare.Delete,允许同时读写操作:

    Dim SpoolFileStream As New FileStream(SpoolFilename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
    
  • 验证假脱机文件状态

    • 确认目标文件不是正在打印的临时文件:打印中的假脱机文件处于独占锁定状态,需等待打印完成后再尝试读取。
    • 检查文件路径有效性,避免指向已被打印服务删除或不存在的文件。
  • 添加重试机制应对短暂锁定
    假脱机文件可能被短暂锁定,通过重试逻辑绕过临时锁定:

    Dim maxRetries As Integer = 3
    Dim retryDelayMs As Integer = 1000
    Dim targetStream As FileStream = Nothing
    
    For retryCount As Integer = 0 To maxRetries - 1
        Try
            targetStream = New FileStream(SpoolFilename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
            Exit For
        Catch ex As IOException
            If retryCount = maxRetries - 1 Then Throw
            Threading.Thread.Sleep(retryDelayMs)
        End Try
    Next
    
    If targetStream IsNot Nothing Then
        Using targetStream
            Using reader As New BinaryReader(targetStream, Encoding.GetEncoding(857))
                ' 执行文件读取操作
            End Using
        End Using
    End If
    
  • 配置必要的权限

    • 运行程序的用户账户需具备对应打印机队列的读取权限,可通过打印机属性的“安全”选项卡配置。
    • 若程序以Windows服务形式运行,需为服务账户分配打印队列访问权限。
  • 确认编码配置合理性
    虽然超时问题与编码无直接关联,但需验证Encoding.GetEncoding(857)是否匹配目标假脱机文件的编码格式,避免后续读取环节出现异常。

内容的提问来源于stack exchange,提问作者Gomesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 15:40:28