Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.07.2013, 11:29   #1
LOST94
Пользователь
 
Регистрация: 13.05.2009
Сообщений: 47
По умолчанию Форма не реагирует ни на какие действия

fMainTimer - это Stopwatch, который уже создан.
Control - метод, который делает несколько расчетов и обновляет экран.
Весь цикл проходит в методе Run, внутри while.

До того, как я запускаю Run, форма реагирует на нажатия клавиш(у меня стоит брекпоинт в обработчике нажатия клавиш)
После запуска форма перестает реагировать на нажатие клавиш, также 3 кнопки справа сверху(свернуть, закрыть и свернуть в окно) не нажимаются, и даже через alt+F4 программа не закрывается. Пробовал создать свой точный таймер разными способами и без второго потока, эффект тот же.
Я не представляю, что здесь может быть не так

Код:
private void TimerTick(){
            fNewTime = fMainTimer.ElapsedMilliseconds;
            while (fNewTime - fOldTime < fTimerInterval)
            {
                Thread.Sleep(1);  // waiting
                fNewTime = fMainTimer.ElapsedMilliseconds;
            }
            fOldTime = fNewTime; 
            
        }

public void Run()
        {

            fMainTimer.Start();
            while(fIsExisted){

                fTimeThread = new Thread(new ThreadStart(TimerTick));
                fTimeThread.Start();
                fTimeThread.Join();
                Control();
            }
        }
LOST94 вне форума Ответить с цитированием
Старый 06.07.2013, 11:54   #2
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

LOST94

После запуска форма перестает реагировать на нажатие клавиш...
Я не представляю, что здесь может быть не так


потому что ты вызовом метода .Join() блокируешь главную форму пока не будет завершен созданный тред.
Rififi вне форума Ответить с цитированием
Старый 06.07.2013, 15:58   #3
LOST94
Пользователь
 
Регистрация: 13.05.2009
Сообщений: 47
По умолчанию

А как тогда можно точный таймер реализовать? Третий поток создать и вызывать контрол из него? (какой-то корявый способ получается).
LOST94 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Никак не могу решить задачу на Паскаль. Даже нету мыслей какие действия нужны. (См. внутри) KotyaraYa Помощь студентам 2 19.12.2012 11:36
Какие существуют основные действия над массивами? Женька Good Помощь студентам 2 27.12.2011 16:32
Run-time форма. ComboBox.itemindex не реагирует на изменение, баг? Человек_Борща Общие вопросы Delphi 4 03.11.2011 22:26
Форма не реагирует на нажатие клавиши Vladya Помощь студентам 7 12.05.2009 17:11
Help!SOS! Форма не реагирует на событие Bezdar Microsoft Office Excel 3 01.09.2008 10:38