Vb.net 程序完成后释放文件

Vb.net 程序完成后释放文件,vb.net,iis,dll,Vb.net,Iis,Dll,我继承了一个在vb.net中构建的web应用程序项目,该项目在运行IIS 8的Windows server 2012服务器上运行。该项目依赖于一些.dll库,这些库也是由我的公司在一个单独的项目中构建的,并将错误消息输出到一个.txt文件中。这个项目的主要结构是由一个以前的程序员建立的,他已经不在我的公司了。我得到了一些复制粘贴代码,以便在需要时添加新的.dll,但它的工作原理从未真正向我解释过,也没有真正记录在注释或其他类似内容中 我发现,如果我触发项目运行,我无法删除调用的.dll文件或.t

我继承了一个在vb.net中构建的web应用程序项目,该项目在运行IIS 8的Windows server 2012服务器上运行。该项目依赖于一些.dll库,这些库也是由我的公司在一个单独的项目中构建的,并将错误消息输出到一个.txt文件中。这个项目的主要结构是由一个以前的程序员建立的,他已经不在我的公司了。我得到了一些复制粘贴代码,以便在需要时添加新的.dll,但它的工作原理从未真正向我解释过,也没有真正记录在注释或其他类似内容中

我发现,如果我触发项目运行,我无法删除调用的.dll文件或.txt文件,直到程序运行完Windows后很长一段时间才告诉我该文件仍在使用。我希望在使用这些文件的过程完成后,项目会尽快发布这些文件。在服务器的实时环境中运行时,以及在本地计算机Windows 10上调试时,我都注意到了这种行为

这就引出了几个相关的问题:

如果文件没有在进程完成使用后立即发布,那么它们将在何时发布? 当项目在服务器上运行时,如果两个用户同时尝试访问相同的.dll或写入.txt文件,会发生什么情况? 在我的.dll调用后,是否有任何代码可以放在我的项目中,以强制在其执行的指定点释放.dll?如果代码中不能做到这一点,那么在程序运行完成后,是否有其他方法可以让文件释放,就像编译器或服务器上的某些设置或标志一样?
dll和文本文件都被锁定的事实让我相信,原来的程序员可能忘记了关闭/处理他们的文件处理程序。最简单的方法是,如果您有权访问源代码,请添加行以关闭文件,或者使用JetBrains中的DotPeek来反编译dll,并查看是否可以从中识别问题。 对于只允许一次使用某个代码块,考虑使用监视器。输入和监视。在系统中退出函数。线程命名空间一次锁定一个用户的代码块。如果您熟悉Debian,这与dpkg如何阻止两个程序同时安装/删除/etc的原理类似。
如果要手动终止进程,请尝试Array.ForEachProcess.GetProcessByNameProcess NAME此处,Subx x.kill

查找在执行过程中启动的服务或其他进程,这些服务或进程可能正在访问这些文件。项目的工作流非常线性。项目接收用户的请求,进行一些处理以获取.dll的输入,调用.dll,处理.dll的输出,并向用户发送响应。即使在发送响应后,.dll仍然被锁定。.txt文件仅由web应用程序本身不使用的.dll写入。据我所知,不应该有任何额外的进程使用这些文件。谢谢你的回答。我以为这让我走上了正确的道路,但我遇到了另一个绊脚石。我需要自己解决一些问题,如果我有更多的问题或任何事情,我会更新我的帖子。