Несколько потоков и компоненты

Язык C#: программирование на C#, портирование кода C# на VB и VB на C#.

Модератор: Ramzes

dmitriy22
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 121
Зарегистрирован: 27.04.2006 (Чт) 12:04
Откуда: Москва

Несколько потоков и компоненты

Сообщение dmitriy22 » 15.04.2009 (Ср) 16:36

Доброе время суток!
У меня проблема, может из-за непонимания

У меня есть форма и на ней я запускаю консольное приложение, которое что-то долго делает, соответственно это что-то я решил загнать в поток, используя backgroundWorker

ну вот и когда у после Asinc срабатывает DoWork, то мне необходимо взять значение из ComboBox на форме, и я создаю делегат методом Invoke

Но string str_server, string str_bd и string str_tabl , обявленнные внутри потом у меня потом когда я вызываю функцию Unload_txt_func и хочу передать туда эти переменные, то он не видит их и соответственно ругается
Код: Выделить всё
The name 'str_server' does not exist in the current context


Код: Выделить всё
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {


             this.Invoke(new MethodInvoker(delegate()
               {

                string str_server =   comboBoxServFrom.Text;
                string str_bd = comboBoxBDfrom.Text;
                string str_tabl = checkListBox_load.Items[0].ToString();
           
               }));
       
           
               
            if (backgroundWorker1.IsBusy == true)
            {
               
                this.Invoke(new MethodInvoker(delegate()
               {

                   //label3.Text = str_tabl;
               }));
               
                Unload_txt_func(InvokeRequired=str_server, str_bd, str_tabl);
            }
        }

Как мне их вытащить ? Или я что-то неправильно делаю ?
Спасибо.
Я не волшебник, я просто учусь.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Несколько потоков и компоненты

Сообщение MIT » 15.04.2009 (Ср) 17:09

dmitriy22 писал(а):Но string str_server, string str_bd и string str_tabl , обявленнные внутри потом у меня потом когда я вызываю функцию Unload_txt_func и хочу передать туда эти переменные, то он не видит их и соответственно ругается
Перечитал пять раз. :?
Автор, можно более подробно и осмысленно?
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Несколько потоков и компоненты

Сообщение ANDLL » 15.04.2009 (Ср) 19:44

Код: Выделить всё
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {

string str_server , str_bd , str_tabl ;
             this.Invoke(new MethodInvoker(delegate()
               {

                str_server =   comboBoxServFrom.Text;
                str_bd = comboBoxBDfrom.Text;
                str_tabl = checkListBox_load.Items[0].ToString();
           
               }));
       
           
               
            if (backgroundWorker1.IsBusy == true)
            {
               
                this.Invoke(new MethodInvoker(delegate()
               {

                   //label3.Text = str_tabl;
               }));
               
                Unload_txt_func(InvokeRequired=str_server, str_bd, str_tabl);
            }
        }
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

dmitriy22
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 121
Зарегистрирован: 27.04.2006 (Чт) 12:04
Откуда: Москва

Re: Несколько потоков и компоненты

Сообщение dmitriy22 » 16.04.2009 (Чт) 9:55

спасибо, странно я так делал но не проходило, видимо надо было объявить переменные с пустым значением

ANDLL писал(а):
Код: Выделить всё
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {

    [b] string str_server="", str_bd="", str_tabl="";[/b]
             this.Invoke(new MethodInvoker(delegate()
               {

                str_server =   comboBoxServFrom.Text;
                str_bd = comboBoxBDfrom.Text;
                str_tabl = checkListBox_load.Items[0].ToString();
           
               }));
       
           
               
            if (backgroundWorker1.IsBusy == true)
            {
               
                this.Invoke(new MethodInvoker(delegate()
               {

                   //label3.Text = str_tabl;
               }));
               
                Unload_txt_func(InvokeRequired=str_server, str_bd, str_tabl);
            }
        }
Я не волшебник, я просто учусь.


Вернуться в C#

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18

    TopList