我在VB.Net中使用了Parallel ForEach
和SyncLock
。
这是我的代码:
Parallel.ForEach(Collection, Sub(p)
'do something
If List.Any(Function(x) x.Field1 = headers(0)) Then
SyncLock _SyncObject
Dim current = List.First(Function(x) x.Field1 = headers(0))
'do something
End SyncLock
End If
End Sub)
此代码在OS 64位中成功执行。但是在OS 32位中,它不起作用。
代码抛出异常,该异常发生在数据集设计器中:
索引超出了数组的范围。
此处发生异常:
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")> _
Public Property FromMVar() As String
Get
Try
**Return CType(Me(Me.tablemyTable.Field1Column),String)**
Catch e As Global.System.InvalidCastException
Throw New Global.System.Data.StrongTypingException("The value for column 'Field1' in table 'myTable' is DBNull.", e)
End Try
End Get
Set
Me(Me.tableLinesFile.FromMVarColumn) = value
End Set
End Property
我尝试了所有目标cpu的状态(86,64,任何cpu)。如何在OS 32上解决此问题?