Ссылка на не принадлежащий члену поток
Я открыл проект, построенный с 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.