我有一个WCF服务,它将打开一个文件,然后将其流返回给客户端。客户端使用stream将流内容保存到文件中。CopyTo(...)然后关闭返回的流。
完成此“下载”步骤之后,我们尝试使用另一个WCF API调用删除服务器上的文件,但是我们得到一个“进程无法访问该文件...,因为该文件正在被另一个进程使用。(mscorlib)”异常。几分钟后,此“锁”消失,可以删除该文件。
如果客户端流Close()无法解决问题,我该怎么办才能使服务器释放流并让文件删除?
根据本文,您可以在操作完成后处理返回值。
做这样的事情:
public Stream GetFile(string path)
{
Stream fileStream = null;
try
{
fileStream = File.OpenRead(path);
}
catch(Exception)
{
return null;
}
OperationContext clientContext = OperationContext.Current;
clientContext.OperationCompleted += new EventHandler(delegate(object sender, EventArgs args)
{
if (fileStream != null)
fileStream.Dispose();
});
return fileStream;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
772 次 |
| 最近记录: |