Re: C# invoke
От: X-Ch1seL  
Дата: 23.04.06 08:31
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Пытаюсь добавить данные в ListBox и при этом нужно делать так чтобы control не завис в процессе добавления данные, и еще видно были как данные добавляются, а не так чтоб "завис" потом "отвис" и показал данные.Сделаю через invoke но ничего не получается, тот же самый эффект как без поточном режиме:


А где собственно поток

        public Form1()
        {
            InitializeComponent();
            th = new Thread(new ThreadStart(FillListBoxThread));
        }

        private Thread th;

        private void button1_Click(object sender, EventArgs e)
        {
            th.Start();
        }

        private void FillListBoxThread()
        {
            for (int i = 0; i < 50000; i++)
            {
                ListBoxItemsAdd(i);
            }
        }

        private void ListBoxItemsAdd(int i)
        {
            if (listBox1.InvokeRequired)
            {
                listBox1.Invoke(new ListBoxItemsAddCallback(ListBoxItemsAdd), new object[] { i });
            }
            else
            {
                listBox1.Items.Add(i);
                listBox1.SelectedIndex = listBox1.Items.Count - 1;
            }

        }

        public delegate void ListBoxItemsAddCallback(int i);
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.