Member 12023878 Ответов: 1

Мой VB.NET приложение не может закрыться - сообщение показывает "дополнительная информация: операция кросс-потока недопустима: управление "детализацией" осуществляется из потока, отличного от потока, в котором оно было создано."


я нашел это сообщение "
Additional information: Cross-thread operation not valid: Control 'Detail' accessed from a thread other than the thread it was created on.
"

когда я хочу закрыть свою форму со мной.
имя picturebox1.видимое = истинное

Кто-нибудь может мне помочь ???

Что я уже пробовал:

If compareResult.Score < (PROBABILITY_ONE / 100000) Then
            cmd = New MySqlCommand("insert into absensi values('" & FormatDateTime(Now, DateFormat.ShortDate) & "','" & Format(CDate(Now.Date.ToShortDateString), "dddd") & "','" & FormatDateTime(Now, DateFormat.ShortTime) & "','" & rdr("id").ToString & "','" & rdr("id_siswa").ToString & "','Hadir')", conn)
            cmd.ExecuteNonQuery()
            MsgBox("Sidik Jari Cocok")
        Else
            MsgBox("Jari Tidak Cocok")
            Me.Close() 'The Problem In This Line
        End If

1 Ответов

Рейтинг:
0

OriginalGriff

Вы не можете получить доступ ни к каким элементам управления пользовательского интерфейса - а форма является элементом управления - из любого места, кроме исходного потока, в котором она была создана: потока пользовательского интерфейса. Если вы попытаетесь даже закрыть форму, вы получите исключение перекрестной потоковой передачи.

Чтобы обойти эту проблему, закройте свое приложение с помощью Application. Exit: Приложение.Метод Выхода (System.Окна.Формы)[^] или закройте его из потока пользовательского интерфейса вместо вторичного потока.

И не делайте ничего подобного: это крайне опасно. Никогда не объединяйте строки для построения SQL-команды. Это оставляет вас широко открытыми для случайной или преднамеренной атаки SQL-инъекции, которая может уничтожить всю вашу базу данных. Вместо этого используйте параметризованные запросы.