Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: .NET 2005 and threads  (Прочитано 4941 раз)
0 Пользователей и 1 Гость смотрят эту тему.
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« : 30-11-2005 10:59 » 

Может кто ещё не в курсе Улыбаюсь

Однако поначалу немного сбило с толку меня нововведение во втором фреймворке Улыбаюсь
Вот это :
Код:
using System.Threading;

class AAA
{
    private Thread backgroundThread;
   
    private void  DoPrintToLabel()
    {
        this.label1.Text = "Blablabla";
    }

    private void Form_Load(object sender, EventArgs e)
    {
        this.backgroundThread = new Thread(new ThreadStart(DoPrintToLabel));
        this.backgroundThread.Start();
    }
}
в версии фреймворка 1.1 нормально отработает. В версии же 2 мы получим эксепшн о Invalid cross-thread operation Улыбаюсь
т.е. из не основного потока мы не можем напрямую обратиться к контролу на форме.

Решается эта проблема например так :
Код:
using System.Threading;

class AAA
{
    private Thread backgroundThread;
    delegate void DoPrintToLabelDelegate();
   
    private void  DoPrintToLabel()
    {
        if (this.InvokeRequired)
        {
            DoPrintToLabelDelegate d = new DoPrintToLabelDelegate(DoPrintToLabel);
            this.Invoke(d);
        }
        else
        {
            this.label1.Text = "Blablabla";
        }
    }

    private void Form_Load(object sender, EventArgs e)
    {
        this.backgroundThread = new Thread(new ThreadStart(DoPrintToLabel));
        this.backgroundThread.Start();
    }
}
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
xelos
Гость
« Ответ #1 : 27-04-2006 21:24 » 

типа IPC продвинутый, теперь обмен данными не только между процессами регламентирован, но и между потоками одного процесса? опять мелкософтовцы улучшают безопасность?
Записан
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #2 : 28-04-2006 04:02 » 

опять мелкософтовцы улучшают безопасность?
Ну как бы типа да Улыбаюсь Второй фрэймворк типа thread safe и посему такие вот извраты ( извраты ли ?  ) Улыбаюсь
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines