Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как вынести работу с RichTextBox в Thread? Приветствуются любые решения 
V
    Опции темы
Lindemann66
  Дата 11.9.2011, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Thinking...
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 2.8.2011
Где: Ульяновск

Репутация: нет
Всего: нет



Всем привет!

Есть приложение, выполняет сортировку пузырьком
Код
Код

//если элементы нужно менять
if (outArray[i] > outArray[i + 1]) {
    //показываем, какие именно элементы нужно менять
    LightSwap(i, true);

    //замираем на 3 секунды
    Thread.Sleep(3000);

    //меняем
    int temp = outArray[i + 1];
    outArray[i + 1] = outArray[i];
    outArray[i] = temp;

    //подсвечиваем элементы после замены
    LightSwap(i, false);

    //замираем на 3 секунды
    Thread.Sleep(3000);

    t = true;
}


Смысл
Видим элементы, которые нужно заменить
Выделяем (rtf-текст + RichTextBox)
Замираем
Заменяем, опять выделяем, опять замираем

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

Надо юзать потоки, я попробовал backgroundWorker, но из него нельзя обращаться к полям на форме, к тому же RichTextBox, а у меня есть именно такая необходимость

Кто-то может подсказать, как производить действия на визуальном уровне в потоках? По отношению к описанной проблеме

Буду благодарен за любые ответы!

Это сообщение отредактировал(а) Lindemann66 - 11.9.2011, 17:32
--------------------
stay true
PM MAIL WWW ICQ   Вверх
Lindemann66
Дата 11.9.2011, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Thinking...
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 2.8.2011
Где: Ульяновск

Репутация: нет
Всего: нет



Прошу прощения, сам нашёл ответ на свой вопрос
Код

/// <summary>
/// Делегат
/// </summary>
/// <param name="input">Параметр</param>
public delegate void InvokeDelegate(string input);
//-------------
/// <summary>
/// Установка текста в область просмотра
/// </summary>
/// <param name="text">Устанавливаемый текст</param>
public void SetText(String text) {
    viewRichTextBox.Rtf = text;
}
//-------------
Object[] obj = new Object[1];
obj[0] = str;
viewRichTextBox.BeginInvoke(new InvokeDelegate(SetText), obj);


smile
--------------------
stay true
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0626 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.