3 / 3 / 2
Регистрация: 27.06.2013
Сообщений: 94
1

При попытке вывести форму по таймеру программа зависает

21.03.2015, 03:04. Показов 1069. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Реальное приложение должно мониторить систему по таймеру и при выполнении некоторого условия выводить форму. Таймер создает события, сравнивая определенную переменную со значением при предыдущей итерации таймера, и все действия, если происходят события, кроме вывода формы, выполняются нормально. Но даже в простейшем случае приведенного кода попытка вывести форму по таймеру приводит к зависанию программы. Вывод форм по нажатию клавиш работает нормально и реализован через WinAPI.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
namespace ShowFormByTimer
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        /// [STAThread]
        
        public static System.Timers.Timer myTimer = new System.Timers.Timer(1000);
        public static bool form2_showed = false;
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            myTimer.Elapsed += new ElapsedEventHandler(TimerElapsed);
            myTimer.Start();
            Application.Run(new Form1());
        }
 
        public static void TimerElapsed(object sender, ElapsedEventArgs e)
        {
            if (form2_showed == false)
            {
                Form2 myform = new Form2();
                myform.Show();
            }
            form2_showed=true;
        }
    }
}
Form1 не нужна, она только для того, чтобы программа оставалась в памяти и могла выводить другие формы. Она минимального размера и сразу скрывается.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
namespace ShowFormByTimer
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Activated += new EventHandler(MyForm_Activated);
        }
 
        private void MyForm_Activated(object sender, EventArgs e)
        { this.Hide(); }
    }
}
Имя Form2 выглядит, как Form2 (не отвечает). При закрытии программы - показать подробности проблемы появляется следующее сообщение.

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Описание:
  Ошибка привела к остановке взаимодействия программы с Windows.
 
Сигнатура проблемы:
  Имя события проблемы:   AppHangB1
  Имя приложения:  ShowFormByTimer.exe
  Версия приложения:    1.0.0.0
  Отметка времени приложения:   550cb287
  Сигнатура зависания:    7ef4
  Тип зависания:    0
  Версия ОС:    6.1.7601.2.1.0.256.1
  Код языка:    1049
  Доп. сигнатура зависания 1:  7ef4188be4da4edbab53f94f04da8190
  Доп. сигнатура зависания 2:  802c
  Доп. сигнатура зависания 3:  802ce9724b4d1a533f0b10c5b6cdce0d
  Доп. сигнатура зависания 4:  7ef4
  Доп. сигнатура зависания 5:  7ef4188be4da4edbab53f94f04da8190
  Доп. сигнатура зависания 6:  802c
  Доп. сигнатура зависания 7:  802ce9724b4d1a533f0b10c5b6cdce0d
 
Ознакомьтесь с заявлением о конфиденциальности в Интернете:
  http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0419
 
Если заявление о конфиденциальности в Интернете недоступно, ознакомьтесь с его локальным вариантом:
  C:\Windows\system32\ru-RU\erofflps.txt
Что не так с показом формы по таймеру, что надо изменить в таймере, и есть ли альтернативы таймеру, если надо мониторить систему и выводить форму?

Добавлено через 7 минут
P.S.
Если заменить myform.Show(); на myform.ShowDialog(); форма выводится, но программа зависает при выводе форм, которые должна выводить эта форма.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.03.2015, 03:04
Ответы с готовыми решениями:

Реализация протокола pop. При попытке реализовать такие команды, как STAT и LIST программа зависает
Здравствуйте! Пытаюсь создать простого почтового клиента, используя методы класса TcpClient....

Зависает программа при попытке сохранить результат
Всем привет. В своём проекте использую Microsoft.Office.Interop.Excel. Процесс открытия документа...

Зависает программа при попытке чтения строки из listbox`a
LPCTSTR dir = L&quot;&quot;; int SelectedIndex = SendMessage(hDirsList, LB_GETCURSEL, 0, 0);...

Программа намертво зависает при попытке ввода данных
Ребята, прошу помощи. Проблема в том, что программа намертво зависает при попытке ввода данных....

1
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,273
21.03.2015, 09:11 2
Max_t,
C#
1
2
3
4
5
6
7
8
9
        public static void TimerElapsed(object sender, ElapsedEventArgs e)
        {
            if (form2_showed == false)
            {
                form2_showed = true;
                Form2 myform = new Form2();
                Application.Run(myform);
            }
        }
0
21.03.2015, 09:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.03.2015, 09:11
Помогаю со студенческими работами здесь

[Ubuntu] При попытке сделать SaveToFile зависает программа
При попытке выполнить следующий код выполнение программы тупо зависает: ...

DirectX.AudioVideoPlayback: при попытке запустить видео программа зависает
Подключил using Microsoft.DirectX; using Microsoft.DirectX.AudioVideoPlayback; При попытке...

Xerox WorkCentre 3550. При попытке напечатать текст (без разницы какая программа) программа из которой идет печать зависает. Картинки печатаются норм.
Вот такая вот байда. Кто сталкивался? Подскажите где тут собака зарыта :) з.ы. никогда не...

Программа падает при попытке вывести диалог
Ест проект QT (простите за грязный код, если кто ни-будь чего-нибудь посоветует, буду очень...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru