Довольно простой вопрос (я думаю), но, похоже, я уже не вижу ответа. Я знаю, что некоторые значения передаются через значение (например, int и long), а другие передаются по ссылке (например, строки), когда вы передаете их в функции.
В моей программе я использую фоновый рабочий, так что графический интерфейс не блокируется, когда мы делаем длинный процесс в фоновом режиме. Мне нужно передать данные обратно в поток пользовательского интерфейса из другого файла, поэтому я использовал для этого события. Теперь мне нужно отправить список массивов строк обратно в поток GUI, чтобы обработать его, и я волнуюсь, как это будет обрабатываться. В основном, в рабочем потоке у меня есть цикл, который заполнит список, отправит его обратно в GUI через обработчик событий, а затем очистит его, чтобы он мог заполнить его на следующем проходе через цикл и начать заново.
Я беспокоюсь, что, когда я это делаю, если список передается по ссылке, то в потоке пользовательского интерфейса я бы подумал, что он будет очищен в середине чтения, так как рабочий поток все равно будет очищать его в фоновом режиме. В этом случае переход будет гораздо предпочтительнее, и я могу найти способы его принудительного (копирование в некоторый массив держателей или добавление мьютекса или что-то в этом роде), но я подумал, что было бы хорошо знать, передаются ли аргументы события через ссылка или значение в целом, или это то же самое, что и методы, и оно будет передавать их, поскольку аргументы обычно передаются?