Итак, я пытаюсь обрабатывать записи по одной строке за раз. Я новичок в многопоточных средах, и меня попросили использовать Parallel.Foreach L oop. Я хотел знать, как обрабатываются локальные переменные в режиме параллельного выполнения. Ниже приведен мой код.
Parallel.ForEach(dtReportData.Tables[0].AsEnumerable(), drow =>
{
string strType = drow["type"];
//Based on this type, I am executing logic from a switch case.
});
Сейчас. Я хочу знать, могу ли я объявить и присвоить значение переменной внутри l oop. Для примера предположим, что параллельно работают 2 потока.
Поток 1 извлек запись и предположим, что значение, которое было выбрано, было "Type1" и сохранено в strType. Теперь я хочу, чтобы мой код выполнял логи c для типа «Тип1» (предположим, что мы написали для него регистр переключения)
Однако давайте предположим, что перед тем, как поток 1 начнет выполнять логи c, поток 2 вступает в игру. Поток 2 назначает значение "Type2" для strType.
Теперь, когда поток 1 перейдет в мой блок Switch, какое значение он будет содержать? Будет ли это «Тип1» или «Тип2».
Обратите внимание, что я глобально не объявляю значение переменной String вне Foreach l oop, оно внутри l oop, и я считаю, что каждый раз создается новый экземпляр.