并行foreach和SyncLock在目标cpu x86中不起作用

时间:2015-04-06 10:33:01

标签: vb.net

我在VB.Net中使用了Parallel ForEachSyncLock

这是我的代码:

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上解决此问题?

0 个答案:

没有答案