Дизайн приложения: пакетный процесс (.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
Как я уверен, что потоки смешивают данные.
- зациклили и записали значения массива транзакций в журнал в началефункции.
- также записал в журнал X и Y.
- Значения, полностью отличающиеся от значений в массиве транзакций и X и Y.
Пробовалследующие, но они не работали.
Непосредственно использованный транзакционный массив для установки значения в .CallAnotherMethod (X, Y)
Пошел вФункция dll верхнего уровня, где TransactionArray является локальной переменной.Переместил его на уровень класса и сделал его разделяемым, а поток статичным.
Вопрос 1. Что еще я могу попробовать?2. Я должен искать в другом месте?