![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
emogot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 20.12.2010 Репутация: нет Всего: нет |
Есть такой код:
delegate void AddText(string text, Color color); void WriteLog(string text, Color color) { if (LogRichTextBox.InvokeRequired) { this.BeginInvoke(new AddText(WriteLog), new object[] { text, color }); } else { if ((LogRichTextBox.Lines.Length) > 100) { LogRichTextBox.Text = string.Empty; } LogRichTextBox.Select(0, 0); Font font = new Font("Tahoma", 8, FontStyle.Regular); LogRichTextBox.SelectionFont = font; LogRichTextBox.SelectionColor = color; LogRichTextBox.SelectedText = text + Environment.NewLine; } } private void Commentation() { while (flag) { lock (locker) { //WriteLog(StartPage.ToString(), Color.FromArgb(/* R */ 0x00, /* G*/ 0x66, /* B */ 0x00)); //Thread.Sleep(500); StartPage++; } } } Как то не понятно, мне казалось что при таком обращении к GUI, из потока, главное окно не должно тормозить, но оно тормозит. Если ставлю задержку например 500, то все нормально работает. Что я не так делаю? или так и должно быть? |
|||
|
||||
Certain |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 235 Регистрация: 18.6.2008 Где: Moscow Репутация: 1 Всего: 4 |
Тормозит 100% из-за
используйте Thread или BackGroungWorker Это сообщение отредактировал(а) Certain - 20.12.2010, 15:42 --------------------
Работа программиста и шамана имеет много общего - оба боpмочyт непонятные слова, совершают непонятные действия и не могут объяснить, как оно работает. |
|||
|
||||
emogot |
|
||||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 20.12.2010 Репутация: нет Всего: нет |
я и использую thread, если бы не использовал, то программа бы просто повисла, BackGroungWorker мне не подходит |
||||
|
|||||
Certain |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 235 Регистрация: 18.6.2008 Где: Moscow Репутация: 1 Всего: 4 |
этот метод запускается, на сколько я понял, в главном потоке. Соответственно из-за цикла подвисает главный поток запустите этот метод в отдельном потоке Это сообщение отредактировал(а) Certain - 20.12.2010, 16:07 --------------------
Работа программиста и шамана имеет много общего - оба боpмочyт непонятные слова, совершают непонятные действия и не могут объяснить, как оно работает. |
|||
|
||||
emogot |
|
||||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 20.12.2010 Репутация: нет Всего: нет |
Вот етот метод private void Commentation(), запускается в потоке, не главном. |
||||
|
|||||
Voyager |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 532 Регистрация: 8.2.2005 Репутация: 3 Всего: 18 |
Все логично. Так обновление контролов происходит непрерывно, еще бы не тормозило. Если вы запустили цикл в потоке, это не значит что GUI, который отуда обновляется, летать будет. Доходит? Не делайте ничего с GUI и не будет тормозов.
|
|||
|
||||
emogot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 20.12.2010 Репутация: нет Всего: нет |
как вы говорите так все и есть, мне просто было важно услышать от того кто знает, нормально это или нет, надеюсь вы знаете что говорите) спасибо большое) |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |