Ссылка на не принадлежащий члену поток

Я открыл проект, построенный с VS2010 в VS2017.

Код не изменился, и версия 2010 года построена идеально, но при сборке с 2017 года я получаю сообщение об ошибке "Ссылка на элемент без общего доступа требует ссылки на объект" со следующим кодом.

Dim doCheck As New System.Threading.Thread(AddressOf Check_Form.checkList)
doCheck.SetApartmentState(ApartmentState.STA)
doCheck.Start(thisname & "~" & thisnum)

Часть AddressOf выдает ошибку.

Что-то изменилось в VS2017 или я забыл что-то изменить? Прошло много времени с тех пор, как я посмотрел на это, но у меня есть новый сертификат подписи и System.Threading импортируется как всегда.

Подпрограмма Check_Form.checkList является публичной, но не общедоступной, но никогда не была в прошлом и всегда работала нормально.

Благодарю.

1 ответ

Решение

Кажется, что Check_Form является типом этой формы владельца. И поэтому My.Forms.Check_Form.checkList был использован с неявным вызовом Check_Form.checkList

Я не уверен, что в версии 2017 есть некоторые изменения в ссылочных приоритетах, но попробуйте изменить свой код на

Dim doCheck As New System.Threading.Thread(AddressOf My.Forms.Check_Form.checkList)

чтобы получить явную версию того же кода. Текущая версия может предпочесть тип перед свойством My.Forms.

Другие вопросы по тегам