请问为什么我删除文件总是提示说“该文件正由另一进程使用”,大家来看下,老问题!

suhuoqiang 2004-03-23 01:53:25
显示所有文件的代码
For Each filename In IO.Directory.GetFiles(Server.MapPath("MyUser/" & userId & "/images/"))
Dim fl As New FileInfo(filename)
fnsize = fnsize + fl.Length
url = Replace(filename, Server.MapPath("") & "\MyUser\" & userId & "\", "")
'url = filename
myimage = System.Drawing.Image.FromFile(filename)
mywidth = myimage.Width
myheight = myimage.Height

i = i + 1
Next
If Not (myimage Is Nothing) Then
myimage.Dispose()
End If
titlesize = titlesize & "图片文件占:" & Math.Round(fnsize / 1024, 2) & "KB; "
tsize = 0
For Each filename In IO.Directory.GetFiles(Server.MapPath("MyUser/" & userId & "/sounds/"))
Dim fl As New FileInfo(filename)
fnsize = fnsize + fl.Length
tsize = tsize + fl.Length
Next
titlesize = titlesize & "声音文件占:" & Math.Round(tsize / 1024, 2) & "KB; "
tsize = 0
For Each filename In IO.Directory.GetFiles(Server.MapPath("MyUser/" & userId & "/swf/"))
Dim fl As New FileInfo(filename)
fnsize = fnsize + fl.Length
tsize = tsize + fl.Length
Next
titlesize = titlesize & "SWF文件占:" & Math.Round(tsize / 1024, 2) & "KB; "
Me.Label1.Text = "<a title='" & titlesize & "'style='Cursor:hand;'><font size=2>你的剩余空间大小:" & Math.Round((usersize - fnsize) / 1024, 2) & "KB" & " <font size=3><sup>move here!</sup></font></font></a>"
Me.trcontent.Text = str

myimage = Nothing

删除的代码

Try
If File.Exists(Server.MapPath("") & "\MyUser\" & Request.QueryString("id") & "\" & Request.QueryString("del")) Then
File.Delete(Server.MapPath("") & "\MyUser\" & Request.QueryString("id") & "\" & Server.HtmlDecode(Request.QueryString("del")))
End If

Catch err As Exception
Response.Write(err.ToString & "<br /><br /><br />")
Response.Write("或者稍候再试!")
di = 1
End Try
...全文
463 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
SVG 2004-03-23
  • 打赏
  • 举报
回复
粗略地打个比方
比如你的逻辑过程是这样:

用户 asp.net
| 显示文件 |
|--------------->|
| 返回文件列表 |
|<---------------|
| |
| 删除选中文件 |
|--------------->|_____
| | | 执行删除文件
| |<---|
| |
... ...
在上面的UML序列图里
asp.net提供了两个服务(正如你所贴出的两块代码)
1.读取文件列表
2.删除文件
这两个服务过程相约束的是文件独占访问问题.
(比如一些fileinfo 的独占访问等)
所以养成个好习惯, 就是在 1 服务过程结束要将这些独占访问全部释放出来.
suhuoqiang 2004-03-23
  • 打赏
  • 举报
回复
一不小心结贴了。
suhuoqiang 2004-03-23
  • 打赏
  • 举报
回复
SVG(ben)

能说明白点吗
suhuoqiang 2004-03-23
  • 打赏
  • 举报
回复
有时删除可以,有时删除就说

System.IO.IOException: 该进程无法访问文件“d:\virtualhost\web84405\www\web\MyUser\12\images\top_logo_2.gif”,因为该文件正由另一进程使用。 at System.IO.__Error.WinIOError(Int32 errorCode, String str) at System.IO.File.Delete(String path) at qiang.userPicDel.Page_Load(Object sender, EventArgs e) in c:\inetpub\wwwroot\qiang\userPicDel.aspx.vb:line 32

过段时间删除又可以,好晕啊,
SVG 2004-03-23
  • 打赏
  • 举报
回复
检查你的逻辑,
正如
If Not (myimage Is Nothing) Then
myimage.Dispose()
End If
在一些关键地方将一些独占访问dispose 先.
suhuoqiang 2004-03-23
  • 打赏
  • 举报
回复
要怎样关闭文件使用后再删除呢,

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧