Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 Как отобразить форму из фонового потока поверх основной?  [new]
lex452
Member

Откуда:
Сообщений: 590
Есть необходимость выполнять некие действия в отдельном потоке, пока они выполняются, на основной форме бегает прогресс бар с результатами выполнения. В этом потоке есть необходимость создать и отобразить форму. Столкнулся с проблемой что форма появляется позади основного окна и пользователь может просто ее не заметить, а мне нужно чтобы она появилась поверх всех окон приложения.
4 авг 16, 21:11    [19501838]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить форму из фонового потока поверх основной?  [new]
Изопропил
Member

Откуда:
Сообщений: 31570
lex452
В этом потоке есть необходимость создать и отобразить форму.

но создать и открыть форму нужно в основном потоке, родителя задать что сверху плавала.

https://msdn.microsoft.com/en-us/library/ms171728(v=vs.110).aspx?f=255&MSPPError=-2147217396
4 авг 16, 22:24    [19502139]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить форму из фонового потока поверх основной?  [new]
lex452
Member

Откуда:
Сообщений: 590
Это не совсем соответствует логике программы, в отдельном потоке вызываются функции из отдельной библиотеки и в ней же происходит вызов формы. А вы предлагаете передавать из библиотеки ссылку на форму в основной поток. Других вариантов нет?
5 авг 16, 07:31    [19503053]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить форму из фонового потока поверх основной?  [new]
Cat2
Member

Откуда: Petroskoi, Karjala
Сообщений: 145753
lex452,

Свойство Form.TopMost
5 авг 16, 07:50    [19503076]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить форму из фонового потока поверх основной?  [new]
Изопропил
Member

Откуда:
Сообщений: 31570
lex452
Это не совсем соответствует логике программы

соответсвует. Всё рисование, создание форм и т п - происходит в основном (UI) потоке.

остальные потоки просто обмениваются данными с основным потоком.

lex452
Других вариантов нет?

Если создавать форму в отдельном потоке, по цикл обработки сообщений для этой формы нужно крутить в этом потоке. грабли описаны в статье от 1993 года - https://msdn.microsoft.com/en-us/library/ms810439.aspx
5 авг 16, 09:02    [19503218]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить форму из фонового потока поверх основной?  [new]
lex452
Member

Откуда:
Сообщений: 590
Cat2
lex452,

Свойство Form.TopMost

оно не работает когда форма создана в другом потоке
5 авг 16, 12:34    [19504780]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить форму из фонового потока поверх основной?  [new]
Изопропил
Member

Откуда:
Сообщений: 31570
lex452,

забудьте как страшный сон идею создавать форму в отдельном потоке. "логику приложения" - правьте
5 авг 16, 12:40    [19504812]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить форму из фонового потока поверх основной?  [new]
ЕвгенийВ
Member

Откуда: Москва
Сообщений: 4986
lex452,
Открой модальную форму, у нее свой UI поток и свой поток обработки сообщений.
5 авг 16, 13:00    [19504974]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить форму из фонового потока поверх основной?  [new]
Изопропил
Member

Откуда:
Сообщений: 31570
ЕвгенийВ
Открой модальную форму, у нее свой UI поток и свой поток обработки сообщений.

откуда такая трава по поток?
5 авг 16, 13:03    [19505000]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить форму из фонового потока поверх основной?  [new]
Где-то в степи
Member

Откуда: Под Таганрогом
Сообщений: 4370
Изопропил
ЕвгенийВ
Открой модальную форму, у нее свой UI поток и свой поток обработки сообщений.

откуда такая трава по поток?

))))
5 авг 16, 14:44    [19505848]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить форму из фонового потока поверх основной?  [new]
ЕвгенийВ
Member

Откуда: Москва
Сообщений: 4986
Изопропил,
Да, про первое ошибся.
5 авг 16, 16:04    [19506441]     Ответить | Цитировать Сообщить модератору
 Re: Как отобразить форму из фонового потока поверх основной?  [new]
Изопропил
Member

Откуда:
Сообщений: 31570
ЕвгенийВ
Изопропил,
Да, про первое ошибся.

лучше второе назвать не потоком, а циклом обработки сообщений
5 авг 16, 16:07    [19506467]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить