Microsoft.SqlServer.Management.Smo.Restore 개체를 사용하여 SQL Server 2000 데이터베이스를 복원하려고합니다. 복원 작업을 시작하기 직전에 사용자가 진행중인 작업을 알 수 있도록 레이블의 텍스트를 변경합니다. 그러나 변경된 텍스트는 fullRestore.Wait() 행 이후까지 GUI에 표시되지 않습니다 (즉, 텍스트는 그대로 유지됩니다).Label.Text 변경이 차단되고 있습니까?
lblStatus.Text = "Restoring Database";
Restore fullRestore = new Restore();
// Configure fullRestore
fullRestore.SqlRestore(_server);
fullRestore.Wait();
이상한 것은 lblStatus 결국 복원 있지만까지 후 디스플레이 "데이터베이스 복원이"완료 않습니다이다. 어떤 아이디어?
어떤 차이를하지 않습니다 lblStatus.Refresh()를 호출하면 사용이 있도록 컨트롤을 무효화 할 수 있습니다 GUI 스레드가 사용 가능할 때까지 실제 다시 그리기가 계속 수행 될 수 없습니다. –
@Simon - GUI 스레드를 잠그고있는 호출 전에 다시 그립니다. –
흥미 롭다. lblStatus.Refresh()를 시도해 보았고 정확하게 필요한 부분을 수행했다. 나는 Wait()에 대한 배경 스레드가 더 나은 해결책이 될 것이라는 것을 알고있다. 그러나 이것은 충분히 간단하며 지금 당장은 효과가있다. – Donut