.Net Многопоточность доступа / изменения локальных переменных в функции - PullRequest
1 голос
/ 22 марта 2019

Дизайн приложения: пакетный процесс (.Net 3.5)

EXE (задачи потоков) -> WCF WebService -> Dll -> ... -> Dll -> ... База данных

Я углубился в точный метод, в котором потоки смешивают данные.Базовое, но точное представление метода.

    Public Function Name(  TransactionArray (,) Object)

      Dim x As Decimal
      Dim y As Decimal

      <Loop TransactionArray>
        x= TransactionArray(0,0)
        y = TransactionArray(1,0)

        <AnotherClassObjectInstance>.CallAnotherMethod(X,Y) 'Add data to database 
      <End loop TransactionArray>

End Function

Как я уверен, что потоки смешивают данные.

  1. зациклили и записали значения массива транзакций в журнал в началефункции.
  2. также записал в журнал X и Y.
  3. Значения, полностью отличающиеся от значений в массиве транзакций и X и Y.

Пробовалследующие, но они не работали.

  1. Непосредственно использованный транзакционный массив для установки значения в .CallAnotherMethod (X, Y)

  2. Пошел вФункция dll верхнего уровня, где TransactionArray является локальной переменной.Переместил его на уровень класса и сделал его разделяемым, а поток статичным.

Вопрос 1. Что еще я могу попробовать?2. Я должен искать в другом месте?

...