Помогите новичку с многопоточностью
От: Аноним  
Дата: 10.11.05 00:11
Оценка: -1
        delegate void AddtoLbHandler(int end);
        Delegate m_method;
        private void button1_Click(object sender, EventArgs e)
        {
            this.m_method = new AddtoLbHandler(this.AddtoLb);
            ThreadStart ts = new ThreadStart(this.WorkerProc);
            Thread thread = new Thread(ts);
            thread.Start();
        }
        void AddtoLb(int i)
        {
            this.listBox1.Items.Add("i = " + i.ToString());            
        }
        void WorkerProc()
        {
            while (true)
            {
                for (int i = 0; i < 99999; i++)
                {
                    object[] args = new object[] { i };
                    this.BeginInvoke(this.m_method, args);
                    Thread.Sleep(10);
                }
            }
        }





данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Помогите новичку с многопоточностью
От: RVilco  
Дата: 09.11.05 23:10
Оценка:
Прочитал статью Еще раз о многопоточности в Windows Forms
ничего не понял и решил попрактиковаться... Задача простая, в цикле от 0 до 99999 добавляю в listBox текст

void AddtoLb(int end, ListBox lb)
{
 for(int i = 0; i < 99999;i++ )
 {
  lb.Items.Add("i = "+i.ToString());
 }
}

В обработчике кнопки
 private void button1_Click(object sender, EventArgs e)
        {
         
        }

создаю делегат вызываю синхронный метод Invoke() приложение висит, асинхронный BeginInvoke приложение висит... Thread не получаеться использовать так-как
моя функция принимает переменные... да и как я понимаю нельзя будет обратиться к листбоксу из другого потока его не создавшего... Голова уже раскалываеться =)
Может мне кто то на пальцах разъяснить как это должно работать...
Сильно не ругайте только начал изучать с#, да и программирование вообще.
P.S. Если важно у меня VS 2005 ver 8.0.50727.42 .NET ver 2.0.50727
Re: Помогите новичку с многопоточностью
От: RVilco  
Дата: 10.11.05 09:05
Оценка:
Здравствуйте, DeniDu, Вы писали:

Спасибо большое — работает, а можно прокоментировать код
я не понял эту функцию WorkerProc()
Re: Помогите новичку с многопоточностью
От: Аноним  
Дата: 10.11.05 14:49
Оценка:
WorkerProc — ф-я, которую выполняет поток thread (ThreadStart содержит адрес ф-и WorkerProc).


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Помогите новичку с многопоточностью
От: Аноним  
Дата: 10.11.05 14:55
Оценка:
> Если важно у меня VS 2005 ver 8.0.50727.42 .NET ver 2.0.50727

в FW 2.0 не надо вызывать BeginInvoke, см. http://www.gotdotnet.ru/Downloads/Examples/221595.aspx
---
см.: LogBuilder, TaskRunner, DropDownHolder (Popup), Html2XmlConverter, Win32ResourceManager, MenuBuilder, Lens, LayeredWindow .


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.