Hallo Formumsgemeinde,
in einem Thread öffne ich ein Form im .showDialog Modus um einen ReportViewer zu öffnen und zu exportieren!
Code für Report-Export:
Sub Export_Report(ByVal test As Boolean, ByVal _Dateiname As String)
Try
Dim warnings As Warning() = Nothing
Dim streamids As String() = Nothing
Dim mimeType As String = Nothing
Dim encoding As String = Nothing
Dim extension As String = Nothing
Dim deviceInfo As String
Dim bytes As Byte()
Dim lr As New LocalReport
Dim RVW As New ReportViewer
lr.ReportPath = "rptTagesbericht_Export1.rdlc"
deviceInfo = _
"<DeviceInfo><SimplePageHeaders>True</SimplePageHeaders></DeviceInfo>"
Me.ReportViewer1.RefreshReport()
bytes = Me.ReportViewer1.LocalReport.Render("PDF", deviceInfo, _
mimeType, encoding, extension, streamids, warnings)
'MsgBox(bytes.Length.ToString)
' Create a file and write the byte data to a file.
Dim oFileStream As System.IO.FileStream
'Überprüfen ob Datei existiert
Dim Counter As Integer = 0
If _Helper.FileExists(_Dateiname & ".pdf") = True Then
Counter += 1
_Dateiname = _Dateiname & "_" & Counter
End If
oFileStream = New System.IO.FileStream(_Dateiname & ".pdf", _
System.IO.FileMode.Create)
oFileStream.Write(bytes, 0, bytes.Length)
oFileStream.Close()
If test = False Then
ClassLogger.Add("## Info: Export_Report ==> Datei: '" & _
_Dateiname & "' erfolgreich erzeugt", False)
ClassLogger.Add("", False)
ClassLogger.Add("", False)
Else
MsgBox("## Info: Export_Report ==> Datei: '" & _Dateiname & _
"' erfolgreich erzeugt", MsgBoxStyle.Information, _
"Erfolgsmeldung:")
End If
Catch ex As Exception
If test = False Then
ClassLogger.Add("Fehler bei Export_Report für das Profil: " & _
_mandant, ex.Message)
Else
MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler bei" & _
"Export_Report für den Mandanten: " & _mandant)
End If
End Try
End Sub Nach diesem Vorgang schließe ich das Formular mit Me.Close und der Thread läuft normal weiter, und wird ordnugnsgemäß beendet.
Wenn ich aber nun meine Hauptanwendung schließe erscheint folgende Meldung:
CannotUnloadAppDomainException
Fehler beim Entladen der Anwendungsdomäne
Stack Trace: bei System.AppDomain.Unload(AppDomain domain)
bei Microsoft.ReportingServices.RefCountedAppDomain.Dispose()
bei Microsoft.Reporting.WinForms.LocalReport.ReportRuntimeSetupHandler.ReleaseSandboxAppDomain()
bei Microsoft.Reporting.WinForms.LocalReport.Dispose()
bei Microsoft.Reporting.WinForms.ReportInfo.Dispose()
bei Microsoft.Reporting.WinForms.ReportHierarchy.Clear()
bei Microsoft.Reporting.WinForms.ReportViewer.Dispose(Boolean disposing)
bei System.ComponentModel.Component.Finalize()
Habe den Thread ganz sicher beendet. Komme mit dem Hinweis auf Microsoft.ReportingServices. nicht klar!
hoffe mir kann hier jemand helfen!
Ich glaube nicht, dass Zitronenfalter wirklich Zitronen falten |