PDA

Показать полную графическую версию : [решено] Синхронизация потоков (C#)


LilLoco
09-08-2010, 07:50
Здравствуйте! Возник такой вот вопрос! Есть форма, есть поток! Как в поток передать данные из одного из контролов на форме?Помогите пожалуйста!

Delirium
09-08-2010, 09:56
Что значит "передать данные в поток"? Что конкретно необходимо сделать? В чем загвоздка?

LilLoco
09-08-2010, 10:29
Ну например, есть на форме некий текстбокс, в нем данные, эти данные нужно передать в поток, чтобы в дальнейшем работать в потоке с ними!

LilLoco
11-08-2010, 11:08
все, разобрался сам :) спасибо за помощь!

Delirium
11-08-2010, 19:41
LilLoco, ну помощи в данной ситуации от нас никакой не было, но обращайтесь, чем сможем, поможем :)

Drongo
11-08-2010, 20:37
все, разобрался сам »А вот я к примеру не разобрался, ответ было бы не плохо дать, а то тема решена, а решение отсутствует. Непорядок. ;)

LilLoco
12-08-2010, 07:51
Извиняюсь %) Сейчас исправлюсь :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();


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




© OSzone.net 2001-2012