|
|
|
Supreme Being
      
участник
Last Login: 17.09.2008 11:12
Сообщ.: 229,
Visits: 1 982
|
|
| есть программа которая обрабатывает текстовые файлы... на формочке два прогрессбара и два StaticText через некоторое время (или если скажем переключился на другую программу а потом решил вернуться к своей) то создаётся эфект подвисания програмы... т.е. программа работает и обрабатывает файлы... но подвисает (появляются белые области) форма и даже в TaskManager винды пишет что программа висит, хотя она продолжает работать (видно по процессу обработки файлов в папке)... как избавиться от этого эфекта зависа? программа в C++ Builder 6, Borland Develop.Studio C++ Заранее благодарю.
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| Запускай обработку файлов в отдельном потоке.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 17.09.2008 11:12
Сообщ.: 229,
Visits: 1 982
|
|
| расширь плиз ответ... я только учусь Сям...
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| Windows, как многозадачная ОС, позволяет выполнять паралельные операции внутри отдельной программы с помощью так называемых потоков (thread) или, как их еще называют, нити. По сути зто просто часть кода твоей программы. Любая программа по умолчанию всегда имеет один главный поток и может создать дополнительные по мере необходимости. В C++ Builder, если правильно помню, надо создать класс наследник от TThread и переопределить метод Execute. В нем тебе и надо разместить код обработки файлов. Подробности читай в справке C++ Builder.
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| Уточнение к предыдущему посту. Вместо "внутри отдельной программы" следует читать "внутри отдельного процесса". Так будет правильнее.
|
|
|
|
|
Supreme Being
      
модератор
Last Login: 10.11.2008 0:08
Сообщ.: 1 298,
Visits: 12 501
|
|
|
|
|
|
Forum Guru
      
участник
Last Login: 06.12.2008 11:51
Сообщ.: 66,
Visits: 770
|
|
| А может в циклы добавить Application->ProcessMessages()?
|
|
|
|
|
Supreme Being
      
модератор
Last Login: 10.11.2008 0:08
Сообщ.: 1 298,
Visits: 12 501
|
|
можно, у меня даже такая ф-ция для MFC была создана
с теоретической точки зрения - это неправильный подход, с практической точки зрения - это зачастую проще и быстрее в реализации
С уважением,
Владимир
|
|
|
|
|
Forum Guru
      
участник
Last Login: 06.12.2008 11:51
Сообщ.: 66,
Visits: 770
|
|
| Судя потому, что на форме "два прогрессбара", стоит использовать потоки. Однако в неопределенно длинных циклах надо и ProcessMessages добавлять, теоретически.
|
|
| |