2009-12-02 2 views
0

WinForms 응용 프로그램이 있으며 DataGridview에 입력 한 데이터를 기반으로 여러 작업을 시작할 수있는 기능을 추가하려고합니다. 작업을 동 기적으로 실행하여 작업이 성공적으로 완료되었음을 나타 내기 위해 행을 DB에 삽입하기 전에 성공적으로 완료되었는지 모니터링해야합니다. 또한 실행중인 작업의 백분율을 반환하는 작업에 상태 이벤트 핸들러가 있습니다.여러 동기 작업의 시작 및 표시

지금까지 스레드를 사용하여 작업을 시작했지만 스레드 중 하나의 진행률은 업데이트 중입니다. 스레드가 완료되면 다음 스레드로 넘어 가고 완료 될 때까지 스레드가 작동합니다. 두 사람 이상이 동시에 달리고 각각의 상태를보고 할 수 있기를 바랍니다.

기본적으로 그리드의 행을 순환하면서 값을 사용하여 생성 한 새 클래스를 인스턴스화합니다. 그런 다음 스레드를 만들고 새 객체에서 작업을 수행하기 위해 하위 키를 시작합니다. 나는 그들이 모두 시작되었다는 것을 알기 때문에 내가 가까이 있다고 생각하지만, 그들은 한꺼번에 모든 것을 시작하기보다는 다른 것을 뒤쫓아 다니고있다.

도움을 주시면 감사하겠습니다.

답변

2

하나씩 실행중인 경우 스레드로 실행되지 않는 것처럼 들립니다. 스레드가 비동기 적으로 실행되고 있는지 확인하는 것이 좋습니다.

동시에 실행할 때 대리인을 사용하여 주 프로세스로 다시보고하고 진행 상황을 표시 할 수 있습니다.

이를 사용할 수 있습니다

Delegate Sub delShowProgressOne(ByVal Row As Integer, ByVal Percent As Double) 
    Sub ShowProgressOne(ByVal Row As Integer, ByVal Percent As Double) 
    If Me.InvokeRequired Then 
     Me.Invoke(New delShowProgressOne(AddressOf ShowProgressOne), Row, Percent) 
    Else 
     DGV.Rows(Row).Cells("Progress").Value = Percent 
    End If 
    End Sub 

이 스레드 내에서 진행 상태를 표시합니다. 함수의 실제 호출을 Form의 스레드로 보내지 만 ShowProgress 만 수행합니다.

희망 사항은이 정보가 도움이되기를 바랍니다.