大廈關閉由造幣廠提供的VM跟蹤代碼,我做了一個排序爲我的應用「預警」系統,警告您當VM正在接近開始導致問題並推薦重新啓動的點。這有點煩人,但直到有人提出了在64位操作系統環境中運行的32位Office的更好解決方案之前,它必須這樣做。
ReturnVM:返回GB中的虛擬內存使用情況,如果超過1.425GB則觸發警報。我發現這適用於我的應用程序,在重新啓動之間給予儘可能多的時間,同時仍然允許一些餘地在重新啓動之前完成工作。隨時根據需要進行調整。
os_Restart:寫入殺死活動的訪問過程中一個批處理文件,刪除剩餘laccdb文件,並重新啓動應用程序(提供一切都在用戶的桌面上)。寫入文件後,它執行批處理。另一個功能是在應用程序啓動時刪除此文件。
TempVars的!tv_WinUID = ENVIRON(「USERNAME」)
Function ReturnVM() As Double
Dim Mem As MEMORYSTATUS
Dim Result As Integer
Mem.dwLength = Len(Mem)
GlobalMemoryStatus Mem
ReturnVM = Format((Mem.dwTotalVirtual - Mem.dwAvailVirtual)/1073741824, "0.000")
Debug.Print ReturnVM & " GB of VM used."
If (ReturnVM >= 1.425) Then
DoEvents
Result = MsgBox("Office Virtual Memory usage is approaching the pre-set limit." & vbCrLf & vbCrLf & "To prevent a possible crash, please click 'OK' to restart immediately." & vbCrLf & vbCrLf & "You may click 'Cancel' to finish what you're working on, but if you do, please restart the application as soon as possible.", vbOKCancel)
If (Result = vbOK) Then
os_Restart
End If
End If
End Function
Public Function os_Restart()
Dim fso As Object
Dim oFile As Object
Dim BatchContents As String
Set fso = CreateObject("Scripting.FileSystemObject")
Set oFile = fso.CreateTextFile("C:\Users\" & TempVars!tv_WinUID & "\Desktop\RestartAccess.bat")
BatchContents = "@echo Restarting Application..." & vbCrLf & _
"@echo off" & vbCrLf & _
"taskkill /f /im MSACCESS.EXE" & vbCrLf & _
"ping -n 6 127.0.0.1 > nul" & vbCrLf & _
"del " & Chr(34) & "C:\Users\" & TempVars!tv_WinUID & "\Desktop\Application.laccdb" & Chr(34) & vbCrLf & _
"start " & Chr(34) & Chr(34) & " " & Chr(34) & "C:\Users\" & TempVars!tv_WinUID & "\Desktop\Application.accdb" & Chr(34)
DoEvents
'Debug.Print BatchContents
oFile.WriteLine BatchContents
oFile.Close
Set fso = Nothing
Set oFile = Nothing
Call Shell("C:\users\" & TempVars!tv_WinUID & "\Desktop\RestartAccess.bat")
End Function
也許你會考慮重新設計的應用程序,所以它並不需要一次打開許多形式。你也可以確定從開放中停止「另外一個表格」實際上運行應用程序。可能你已經打開的一個表單已經佔用了內存。 – HelloW
該應用程序非常複雜,我們不能限制表單的數量,因爲客戶端不想要。我們一直在進行大約一百次的「再一次形式」測試。你是對的,一個打開的表單使用連接內存,發生內存限制問題。 –
我們正在回訪2000年,我們無法解決問題。 –