类变量和多线程

时间:2016-03-11 10:58:56

标签: vb.net multithreading

我有一个班级:

Public Class GenericReturnUploadController

具有以下类变量:

Private _configSettings As Dictionary(Of String, String)

在方法:ProcessFile中,我填充这个字典,然后作为一个类变量,然后由ProcessFile调用的其他方法使用它,包括GetReportDate

    Public Overrides Function ProcessFile(ByVal record As Record) As Result
 LayoutRenderer.SetCurrentState(UploadServiceState.ProcessingFile, record)


            Dim code As String = record.Code

            'First get all config settings for this Return Type
            Dim dataAccess As New GenericDataAccess
            _configSettings = dataAccess.GetConfigSettings(code)

            Dim reportingDate As DateTime = GetReportingDate(record)

在另一个类中:我在Parallel.ForEach循环中调用ProcessRecord。然后,此ProcessRecord创建一个GenericReturnUploadController的新实例,并调用ProcessFile方法。

Dim controller As New GenericSystemUploadController()
If recordList.Any()
    Parallel.ForEach(recordList, Sub(record) controller.ProcessRecord(record))
    recordList = controller.GetAllQueuedRecords(QueueProcessorConfigSection.GetConfig().QueueType)
End If

现在我的问题是,_configSettings将针对每个代码进行更改。从我所读过的内容来看,但我还没有通过我的测试验证它,但是使用这个类变量可以让其对其他线程更改的内容保持开放。我的理解是否正确?如果我将其更改为局部变量然后将ByVal传递给其他方法,那么这会解决任何潜在的问题吗?

提前致谢。

0 个答案:

没有答案