Мое приложение (C #, VS2008) загружает информацию из базы данных (SQL Server 2008 Express) по сети. Во время (возможно) долгого ожидания я хочу, чтобы диалоговое окно «Загрузка ...» отображалось в другом потоке, но только если операция занимает больше определенного периода времени (скажем, 500 мс).
Итак, моя форма загрузки отображается после 500 мс (если операция длится так долго) без установки владельца формы диалога загрузки (т. Е. Вызова LoadingDialog.ShowDialog ()), но при попытке вызвать LoadingDialog. ShowDialog (владелец IWin32Window) с владельцем, установленным в основную форму (передается через параметр потока). Я получаю исключение InvalidOperationException о доступе к элементам управления между потоками.
Мой основной вопрос: могу ли я создать и ShowDialog форму с параметром владельца, установленным для формы в другом потоке? Я хочу сделать это так, чтобы диалог загрузки был модальным для остальной части приложения, то есть, как и любой другой диалог, фокусировался и запрещал ввод в другом месте.
Может кто-нибудь предложить предложение? Я прочитал кучу об заставках без удачи, а также об Invoke и BeginInvoke без удачи. Есть ли другой способ, которым я должен идти об этом?
Пожалуйста, не стесняйтесь просить разъяснений, если вы не понимаете.
Merci (как говорят по-французски),
Jacob.