모든 테이블에 많은 트랜잭션을 표시해야합니다. 처리하는 데 오랜 시간이 걸립니다. Visual Basic 2010에서 백그라운드 프로세스를 사용하려고하지만 "크로스 스레드 작업 감지 됨"과 같은 오류 메시지가 항상 나타납니다. 나는 인터넷에서 발견 한 여러 가지 방법을 시도해 왔지만 여전히 문제가 무엇인지 찾을 수 없습니다. 이 문제를 해결하는 방법에 대해 도움을주십시오. 내가 USP_Select_Registration
의 내부는 양식 컨트롤의 값을 읽으려고하기 때문에이 오류가 생각백그라운드 작업자 VB.NET
Private Sub CHK_A_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CHK_A.CheckedChanged
Disabled()
P_Panel.Visible = True
B_Worker.RunWorkerAsync()
End Sub
Private Sub BTN_Search_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTN_Search.Click
USP_Select_Registration()
End Sub
Private Sub B_Worker_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles B_Worker.DoWork
Threading.Thread.Sleep(25)
USP_Select_Registration()
End Sub
Private Sub B_Worker_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles B_Worker.RunWorkerCompleted
P_Panel.Visible = False
End Sub
이 사람이 내 가게 절차
Public Sub USP_Select_Registration()
Dim Con As New SqlConnection(SQLCon)
Try
Con.Open()
Dim Cmd As New SqlCommand("USP_Select_Registration", Con)
Cmd.CommandType = CommandType.StoredProcedure
Cmd.Parameters.Add("@Check", SqlDbType.Bit).Value = CHK_A.EditValue
Cmd.Parameters.Add("@Month", SqlDbType.Int).Value = CBO_Month.SelectedIndex + 1
Cmd.Parameters.Add("@Year", SqlDbType.Int).Value = SPE_Year.EditValue
Cmd.Parameters.Add("@Search", SqlDbType.VarChar, 150).Value = TXT_Search.Text
DS_Registration.Tables("MST_Registration").Clear()
Dim Adt As New SqlDataAdapter(Cmd)
Adt.Fill(DS_Registration.Tables("MST_Registration"))
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error")
Finally
Con.Close()
End Try
End Sub
내가 dowork에서 BackgroundWorker'으로 나쁜 영어 – christ2702
'희미한 노동자에 대 한 미안 해요 해당 개체를 전달 .. 제거하거나 btn_search_click에 동일 할 시도 – matzone
로 만들려고. .. – christ2702