I have designed a .net application which will open an Excel file at the time of login and use it to print a report. It will be closed while logging out the user. I set visible to false for Excel file, so that user doesn't know about the background process.
But if anybody opens any other Excel file during this time, my report Excel file becomes visible and the Excel object is collapsed. I have to go to task manager and kill the all open Excel instances to fix this.
Code:
Private Sub OK_Click(sender As Object, e As EventArgs) Handles OK.Click
Try
Dim dt As New DataTable()
Dim Adapter As New SqlDataAdapter()
ConnectMe()
Dim SQLCmd As New SqlCommand("uspLogin", Con)
SQLCmd.CommandType = CommandType.StoredProcedure
SQLCmd.Parameters.AddWithValue("@pLoginName", UsernameTextBox.Text.Trim())
SQLCmd.Parameters.AddWithValue("@pPassword", PasswordTextBox.Text.Trim())
Adapter.SelectCommand = SQLCmd
Adapter.Fill(dt)
SQLCmd.Dispose()
If dt.Rows.Count > 0 Then
Me.Cursor = Cursors.WaitCursor
Loading.Show()
OpenAllTempaltes()
Me.Hide()
Con.Close()
Me.Cursor = Cursors.Arrow
Else
MsgBox("Your Credential is Wrong !!!", MsgBoxStyle.OkOnly + MsgBoxStyle.Critical, "Login")
UsernameTextBox.Text = ""
PasswordTextBox.Text = ""
UsernameTextBox.Focus()
End If
Catch ex As Exception
Application.Exit()
End Try
End Sub
Public Sub OpenAllTempaltes()
Try
xlWorkBook = xlApp.Workbooks.Open(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Templates", "Excel_Templates_GST.xlsm"), Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, True)
Catch ex As Exception
Throw
End Try
End Sub
Public Sub CloseAllTempaltes()
Try
CleanUp(xlApp, xlWorkBook, xlWorkSheet)
Catch ex As Exception
ExceptionLog("PrintPage", "CloseAllTempaltes", ex.ToString(), DateTime.Now.ToString("dd-MMM-yyyy"))
Finally
GC.Collect()
End Try
End Sub
How can I prevent this?