Доброй ночи!
Возник вопрос как сделать экран загрузки когда программа делает большие(долгие ~45-70сек) вычисления, а пользователь думает, что она зависла.
Видел где то на хабре подобную тему но не могу найти, помогите...
Если экран во время запуска, то это называется Splash Screen.
Если во время обработки, то в момент запуска вычисления показываете форму на которой крутится BusyIndicator например и скрываете её, когда вычисления кончаются.
Если процесс не изменяет ничего на форме (прогресс бары там всякие) то можно не заморачиваться и просто вызывать функцию "в обертке" примерно так:
MethodInvoker mi = new MethodInvoker(delegate{ //создаем вызов метода в отдельном потоке
ОченьМедленнаяФункция(int СПараметрамиДа);
}); mi.BeginInvoke(null, null);//начинаем выполнять, в случае чего его можно всегда убить через объект mi
ваш ответ не подходит. Не будет же автор вопроса изменять существующий код и оборачивать его...
Он задал конкретный вопрос - как выводить всплывающее окно вторым потоком (в фоне), во время выполнения основного потока
pvlunegov: не соглашусь "сделать экран загрузки когда программа делает большие(долгие ~45-70сек) вычисления" как раз подразумевает то что ему так или иначе придется код изменить, в моем случае достаточно над ним повесить MethodInvoker mi = new MethodInvoker(delegate{ //создаем вызов метода в отдельном потоке и под ним }); mi.BeginInvoke(null, null);//начинаем выполнять, в случае чего его можно всегда убить через объект mi, и форма уже не зависает, что с ней делать во время вычислений автор может придумать сам, к примеру воткнуть анимированную гифку в picturebox или еще что. Можно при желании даже из этой обертки к форме обращаться без всяких проблем (но только в релиз версии (без debug).
Ваш вопрос не корректен.
Укажите область применения вашей задачи.
Где нужно чтобы было всплывающее окно?
В Windows? В окне браузера?
Если вам нужно всплывающее окно в браузере, это просто:
Html:
Из кода удалите "-":
<-div class="popup">
Привет!
Я – всплывающее окно.
<-/div->