Предположим, что у меня есть нить 1, поток пользовательского интерфейса главного окна и поток 2, поток пользовательского интерфейса, который является модальным.Вызов делегата пользовательского интерфейса вызывает скрытие UI
Теперь нить 1 выполняет кусок кода и хочет изменить элемент пользовательского интерфейса в форме входа, чтобы он вызывал делегата, чтобы что-то изменить в потоке 2. Но когда он это делает, форма входа скрывается за основным окном и мне нечего возвращать. Выбор его на панели задач ничего не делает, и запись «Активировать()» в конце вызываемого метода тоже ничего не делает.
Как я могу сохранить интерфейс пользователя нити 2?
Благодаря
Кроме того, когда есть только один поток, используя ShowDialog в форме входа, он блокирует в главном окне и форсировать форму входа в систему. Это уже не так, если у меня есть 2 потока, и я могу закрыть главное окно, пока форма входа еще открыта. Могу ли я воспроизвести поведение одного приложения потока с помощью двух потоков? – xster
Вы хотите «блокировать» (модальное) поведение? Возможно, вы могли бы создать второй поток внутри формы входа, используя BackgroundWorker или что-то в этом роде. Отключить все элементы управления в диалоговом окне входа в систему, выполнить любые асинхронные задачи, которые вам нужны (вход в систему?), А затем, когда BackgroundWorker завершает его, либо разблокирует форму входа в систему, либо говорит «извините, попробуйте еще раз» или если форма успешно закрывается и позволяет вам к основному приложению. –
Если бы я сделал это, пользовательский интерфейс входа в систему был бы таким же, как и основной интерфейс пользователя? Предположим, мне нужны независимые потоки пользовательского интерфейса, но в зависимости от поведения пользовательского интерфейса. т.е. я хочу, чтобы форма 2 рисовалась независимо от того, как занята форма 1, но я не хочу, чтобы на панели задач находились 2 значка. Я также не хочу, чтобы одна форма показывалась без другой. Возможно ли это на отдельных потоках? – xster