我有一个具有多个属性的 DLL 和一个生成在后台运行 SSRS 报告并将其保存到 PDF 文件的函数。
我有一个数据表,其中包含需要生成的所有报告以及需要保存的位置。
我想让 DLL 的每个实例在单独的线程中运行。我试了一下,发现 DataTable 中的第二行覆盖了第一行。
这是类/DLL代码
Public Class SSRSFunctions
Private Shared _Formated_Parameters As String
Private Shared _Report_Parameters As Dictionary(Of String, String)
Public Property FORMATED_PARAMETERS() As String
Get
Return _Formated_Parameters
End Get
Set(ByVal value As String)
_Formated_Parameters = value
End Set
End Property
Public Sub New()
_Report_Parameters = New Dictionary(Of String, String)
End Sub
Public Function RenderReportToFile() As String
'RenderReportHere
End Function
Public Sub AddParameter(ByVal Name As String, ByVal Value As String)
If _Report_Parameters.ContainsKey(Name) Then
_Report_Parameters.Remove(Name)
_Report_Parameters.Add(Name, Value)
Else
_Report_Parameters.Add(Name, Value)
End If
End Sub
End Class
这是调用代码
Private Sub CheckForNewRequests()
'Filter DataTable for Reports to Run
For Each dr As DataRow in DateTable.Rows
Dim rpt As New SSRSFunctions
Dim t1 As New Threading.Thread(AddressOf StartNewThread)
rpt.FORMATED_PARAMETERS = (dr("REPORT_PARAMS"))
t1.Start(rpt)
Next
End Sub
Private Function StartNewThread(ByVal report As SSRSFunctions) As String
Return report.RenderReportToFile()
End Function
我试图弄清楚为什么“Dim rpt As New SSRSFunctions”没有创建 DLL 的新实例,因此 dataTable 的第二行有一个新实例来存储它的参数。
第二行覆盖第一行。
帮助?
感谢 jlimited