我已經繼承了在我的服務器(運行IIS 8的Windows Server 2012)上運行的vb.net中構建的Web應用程序項目。該項目依賴於某些.dll庫,這些庫也是由我的公司在單獨的項目中構建的,並將錯誤消息輸出到.txt文件。這個項目的主要結構是由一位不在我公司的程序員創建的。我需要一些複製粘貼代碼來添加新的.dll文件,但是它的工作原理從來沒有真正向我解釋過,並且沒有真正記錄在註釋或其他任何類型的文件中。程序結束後發佈文件
我發現如果我觸發項目運行,我無法刪除被調用的.dll文件或.txt文件,直到程序運行結束很久(Windows告訴我該文件仍在使用中)。我預計項目會在使用它們的過程完成後立即發佈這些文件。我在服務器的實時環境中運行時以及在本地計算機上調試時都注意到了這種行爲(Windows 10)。
這使我幾個相關的問題:
- 如果文件不盡快處理完成使用它們釋放出來,當他們釋放?
- 當項目在服務器上運行時,如果兩個用戶試圖訪問相同的.dll或同時寫入.txt文件會發生什麼情況?
- 在我的.dll調用強制將.dll發佈到指定執行位置後,是否可以在我的項目中放入任何代碼?如果這不是代碼中可以完成的事情,那麼在程序運行完成後(如編譯器或我的服務器中的某些設置或標誌),還有其他方法可以讓文件釋放嗎?
查找在執行期間啓動的服務或附加進程,這些進程可能正在訪問這些文件。 – djv
該項目的工作流程非常線性。該項目接收來自用戶的請求,執行一些處理以獲取.dll的輸入,調用.dll,處理.dll的輸出並向用戶發送響應。即使在發送響應之後,該.dll仍然被鎖定。 .txt文件僅由.dll寫入(Web應用程序本身不使用它)。據我所知,不應該有任何額外的進程使用這些文件。 – GeneralMike