Excel Process'in ReleaseComObject ve GC.Collect yöntemini çağırdıktan sonra bile etkin kaldığı bir sorunla karşı karşıyayım.VB.Net - Excel COM Nesne çıkmıyor
Public Class frmTEST
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim objExcel As xl.Application
Dim wbReport As xl.Workbook = Nothing
objExcel = CreateObject("Excel.Application")
Try
wbReport = objExcel.Workbooks.Open("D:\EL\Nicolas\VS Online\Classe A v2\Launcher-v2.2\Resources\Modules\Zoom.xlsm")
Catch ex As Exception
Common.WriteDebugLog("Exception line 44")
End Try
If wbReport Is Nothing Then
MsgBox("Erreur d'ouverture du reporting - Code 745.", vbExclamation)
Exit Sub
End If
With objExcel
.Visible = False
.ScreenUpdating = False
.Calculation = xl.XlCalculation.xlCalculationManual
.DisplayAlerts = False
End With
'' Here I do all my processing which I have removed to make the question more simplified
With objExcel
.Calculation = xl.XlCalculation.xlCalculationAutomatic
.ScreenUpdating = True
.DisplayAlerts = True
End With
''~~> Close & Clean Up
wbReport.Close(SaveChanges:=False)
objExcel.Quit()
Me.ReleaseObject(wbReport)
Me.ReleaseObject(objExcel)
MsgBox("Done")
End Sub
Private Sub ReleaseObject(ByVal obj As Object)
Try
Dim intRel As Integer = 0
Do
intRel = System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
Loop While intRel > 0
MsgBox("Final Released obj # " & intRel)
Catch ex As Exception
MsgBox("Error releasing object" & ex.ToString)
obj = Nothing
Finally
GC.Collect()
End Try
End Sub
End Class
:
My Excel Süreci ama Kullanıcı Formunu Aşağıda
kapatmak SADECE sonra sonlandırır yapıyorum her şeyi Excel Süreci kurtulmak ne gösteren örnek kod UPDATE: Alınan yorumlara dayanarak, other thread'u izleyerek kodumda değişiklikler yaptım, ancak yine de yardımcı olmuyor. Benim Excel İşlemi Net V4 veya daha kullanıyorsanız ben Kullanıcı Formu
Sil deneyin/Yakalama, sizin kodunda bir hata saklıyor. Asla hepsini bir kez daha yakalamayı deneyin. –
Teşekkürler ama yardım etmedi. Lütfen güncellenmiş sorumu kontrol edin. – Tejas
Bu soruyu yeniden açmak için oy verdim, çünkü seçili olanın kopyası değil. Bu soru COM serbest bırakılması mumbo jumbo/dot kuralını tavsiye etti ve hala başarısız çünkü _solution_ cevap değil. – TnTinMn