시나리오 : 우리는 DataAdapter (데이터 테이블)에 첨부 된 DataGridView를 가지고 있으며, (adapter.fill (query, datatable))를 사용하여 데이터 테이블에 데이터를로드합니다. beginInvoke) 일단 데이터가로드되면 해당 데이터 테이블을 datagridview (주 스레드)에 연결합니다.DataAdapter.Fill 취소()
fill()이 아직 실행 중인지 확인하고 취소 할 수있는 방법이 있습니까?
실제 시나리오 : 사용자가 사용자 이름을 클릭하면 해당 데이터가 DataGrid에로드됩니다. 가끔은 사용자가 참을성이 없어서 다른 사용자를 클릭합니다. 여기에서 이전 채우기를 취소하고 새 채우기를 시작합니다.
업데이트 : 두 명의 DataApdater (및 두 개의 DataTable)를 유지하고 하나의 datatable을 datagridview에 연결하고 데이터를 다른 데이터 테이블에 비동기 적으로로드하기 시작합니다. 데이터가로드되면 우리는 방금 채운 DataTable에 DataGridView를 바인딩합니다. 이전 데이터 테이블을 비동기 적으로로드하기 시작합니다.이 방법으로 UI는 항상 현재 데이터를 가져옵니다 (사용자가 UI를 새로 고치거나 정지 할 때 대기하지 않고).
"C# ADO.net"과 같은 것을 제목에 넣지 마십시오. 그것이 [SO]에 대한 태그입니다. –
AsyncMethodCaller를 IAsyncResult와 함께 사용하고 있습니까? –
@James, 나는 일반 Delegate를 사용하고 beginInvoke를 호출한다. 결국 데이터 테이블을 채 웁니다. 콜백 메서드에서 나는 그 데이터를 DataGrid에 바인딩합니다. – karephul