2

我正在运行AsyncReader以打开另一个应用程序正在下载的共享 MPG 文件(渐进式下载)。共享 MPG 文件是使用FILE-SHARE-READ | FILE-SHARE-DELETE | FILE-SHARE-WRITE共享权限创建的。我什至尝试了这些标志的每一种组合。

这是问题所在:在 C# 中,该AsyncReader.Load方法返回错误:

正在使用的文件

在 C++ 中它没有。C++ 打开文件就好了。

知道这是为什么吗?

4

1 回答 1

0

知道这是为什么吗?

这是因为文件源(异步)过滤器以独占方式打开文件,不允许其他人同时逐步写入文件。

旧 SDK 中相同/相似异步读取器的代码(可作为示例)包含:

// Open the requested file
HANDLE hFile = CreateFile(lpszFileName,
                          GENERIC_READ,
                          FILE_SHARE_READ,
                          NULL,
                          OPEN_EXISTING,
                          0,
                          NULL);

注意FILE_SHARE_READ。您的选择是:

  1. 在打开播放之前完成渐进式下载
  2. 从 SDK 示例构建自定义阅读器并更改文件打开模式以允许在播放时写入
于 2015-11-27T08:36:08.300 回答