【发布时间】:2013-10-18 19:13:03
【问题描述】:
我有一个程序可以在播放视频文件时复制它们。
每当我在程序中关闭() FileStream 时,视频播放器(第 3 方)通常无法访问文件大约半秒(播放冻结)。
据我所知,如果我使用 Dispose() 而不是 Close() 并不重要。 文件按预期复制到新位置,所以播放冻结是我需要解决的问题,但坦率地说,我不知道第 3 方软件如何读取文件的具体细节。 我只是想不通为什么在我关闭阅读流时会出现问题。
我希望避免将复制过程推迟到视频播放器播放完毕。
任何建议将不胜感激。
FileStream SourceFile = new FileStream(sourcePath, FileMode.Open, FileAccess.Read);
while(bytesLeftToCopy > 0)
{
int _BlockSize = 1024 * 1024;
byte[] _BlockBuffer = new byte[_BlockSize];
SourceFileBytes = SourceFile.Read(_BlockBuffer, 0, _BlockSize);
//you get the idea
}
SourceFile.Close();
【问题讨论】:
-
不清楚你在问什么?你想同时在两个程序中打开
FileStream? -
是复制失败还是视频播放失败?先调用哪个?您确定这两个操作都不会锁定文件以防止其他读取访问权限吗?
-
对不起,我想进一步阐述
-
有什么理由不使用
File.Copy? -
是的,该程序旨在限制复制过程的速度,以便机器上的其他进程始终有足够的资源。
标签: c# filestream