Microsoft.SqlServer.Management.Smo.Restoreオブジェクトを使用してSQL Server 2000データベースを復元しようとしています。復元操作を開始する直前に、ラベルのテキストを変更して、ユーザーが何が起こっているかを知るようにします。ただし、変更されたテキストは、fullRestore.Wait()行の後まで、GUIで表示されません(つまり、テキストは元のままです)。奇妙なことは、lblStatusが最終的表示は「データベースの復元」んですが、ない後までLabel.Text変更がブロックされていますか?
lblStatus.Text = "Restoring Database";
Restore fullRestore = new Restore();
// Configure fullRestore
fullRestore.SqlRestore(_server);
fullRestore.Wait();
復元完了です。何か案は?
は、任意の違いをすることはありませんlblStatus.Refreshを()の呼び出しを使用、それは意志ように制御を無効にすることができますGUIスレッドが利用可能になるまで、実際の再描画はまだ起こりません。 –
@Simon - GUIスレッドをロックしている呼び出しの前に再描画します。 –
興味深いことに、私はlblStatus.Refresh()を試してみました。私は、Wait()のバックグラウンドスレッドがより良い解決策になることを知っていますが、これは十分に簡単で現在は機能しています。 – Donut