Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Синхронизация потоков (C#) (http://forum.oszone.net/showthread.php?t=182471)

LilLoco 09-08-2010 07:50 1469757

Синхронизация потоков (C#)
 
Здравствуйте! Возник такой вот вопрос! Есть форма, есть поток! Как в поток передать данные из одного из контролов на форме?Помогите пожалуйста!

Delirium 09-08-2010 09:56 1469820

Что значит "передать данные в поток"? Что конкретно необходимо сделать? В чем загвоздка?

LilLoco 09-08-2010 10:29 1469854

Ну например, есть на форме некий текстбокс, в нем данные, эти данные нужно передать в поток, чтобы в дальнейшем работать в потоке с ними!

LilLoco 11-08-2010 11:08 1471291

все, разобрался сам :) спасибо за помощь!

Delirium 11-08-2010 19:41 1471657

LilLoco, ну помощи в данной ситуации от нас никакой не было, но обращайтесь, чем сможем, поможем :)

Drongo 11-08-2010 20:37 1471708

Цитата:

Цитата LilLoco
все, разобрался сам »

А вот я к примеру не разобрался, ответ было бы не плохо дать, а то тема решена, а решение отсутствует. Непорядок. ;)

LilLoco 12-08-2010 07:51 1471932

Извиняюсь %) Сейчас исправлюсь :wink: :

Объявляем делегат
Код:

private delegate string GetTextDelegate();
далее описываем саму функцию
Код:

private string GetText()
{
string strText = comboBox.Text;
return strText;
}

Здесь описываем метод обращения к элементу,(в данном случае комбобокс)
Код:

private string GetTextFunc()
{
string strText;
if (comboBox.InvokeRequired)
{
GetTextDelegate GTD = new GetTextDelegate(GetText);
strText = Convert.ToString(comboBox.Invoke(GTD));
}
else
{
strText = comboBox.Text;
}
return strText;
}

Далее пишем функцию самого потока(банальный пример конечно, но все же:)))
Код:

private void thFunc()
{
int counter = 0;
string text;
while(true)
{
text = GetTextFunc();
MessageBox.Show(text + "__________" + counter.ToString());
counter ++;
thread.sleep(1000);
}
}

Ну и запускаем сам поток
Код:

Thread thGo = new Thread(new ThreadStart(thFunc));
thGo.Start();

Вот и все, вроде бы нигде не ошибся, и все должно работать %)
Еще раз приношу свои извинения за невыложенный пример :)


Время: 07:21.

Время: 07:21.
© OSzone.net 2001-