Передаются ли аргументы события по ссылке или по значению в C #?

Довольно простой вопрос (я думаю), но я, похоже, уже не вижу ответа. Я знаю, что некоторые значения передаются через значение (например, int и long), а другие передаются по ссылке (например, строки), когда вы передаете их в функции.

В моей программе он использует фоновый рабочий, так что графический интерфейс не блокируется, когда мы выполняем длинный процесс в фоновом режиме. Мне нужно передать данные обратно в поток пользовательского интерфейса из другого файла, поэтому я использую события для этого. Теперь мне нужно отправить список массивов строк обратно в поток GUI для обработки там, и я беспокоюсь о том, как он будет обрабатываться. По сути, в рабочем потоке у меня есть цикл, который будет заполнять список, отправлять его обратно в графический интерфейс через обработчик событий, а затем очищать его, чтобы он мог заполнить его при следующем прохождении цикла и начать заново.

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

Ответы на вопрос(4)

Ваш ответ на вопрос