나는 dataGridView 및 bindingSource와 함께 EDM 개체를 사용하고 있습니다. 바인딩 소스/그리드에 새 요소를 많이 추가 한 후 (1 초) 버튼 클릭으로 context.SaveChanges를 호출하면 UI가 몇 초 동안 정지합니다. EDM 객체는 스레드로부터 안전하지 않으므로이 작업을 백그라운드 작업자에게 맡길 수는 없다고 읽었습니다. 누구든지 작업 표시가 진행 중임을 사용자에게 알릴 수있는 조언이 있습니까 (예 : 선택 윤곽 진행 막대 등)?엔터티 데이터 모델 .SaveChanges 사용자 인터페이스가 "hangs"
1
A
답변
1
EDM 개체는 스레드로부터 안전하지 않으므로이 작업을 백그라운드 작업자에게 맡길 수는 없다고 읽었습니다.
물론 가능합니다. 스레드로부터 안전하지 않은 것은 많은 스레드에서 동시에 인스턴스에 액세스하는 것이 안전하지 않다는 것을 의미합니다. 한 명의 작업자를 사용하여 작업하는 것이 안전합니다.
0
UI를 넘겨주지 않으려면 백그라운드 스레드에서 호출하거나 비동기 호출 형식을 사용해야합니다. 버튼 이벤트 핸들러에서 context.SaveChanges
을 직접 생성하면 UI가 중단됩니다.