Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел. |
![]() |
||
![]() |
Философия, технологии, алгоритмы! |
![]() |
|
Опции темы |
![]() |
#1 |
Форумец
Сообщений: 43
Регистрация: 20.05.2008
![]() |
![]()
Доброго времени суток. Появилась нужда обратиться к контролу из другого потока, что насколько мне известно делается посредством делегата. Попробовал сделать по примеру в МСДН, сработать сработало, а сам факт обращения из левого потока остался в результате нормального функционирования программы нет. Просьба подсказать верный подход к решению данной проблемы.
Код:
public class DelegateLearnin { public delegate void del(string txt); public static void Learnin() { del a = new del(AddText); a("Доброе утречко"); } public static void AddText(string txt) { AdvancedForm.listBox1.Items.Add(txt); } } |
![]() |
![]() |
#2 |
старый хрыч
Сообщений: 6,705
Регистрация: 17.12.2006
Возраст: 37
![]() |
[PHP]private delegate void SetTextDelegate(string s);
private void SetText(string s) { if (button1.InvokeRequired) { SetTextDelegate setTextDelegate = new SetTextDelegate(SetText); this.Invoke(setTextDelegate, new object[] { s }); } else button1.Text = s; } private void button1_Click(object sender, EventArgs e) { Thread thread = new Thread(Renamer); thread.Start(); } private void Renamer() { SetText("Ахтунг!"); }[/PHP] |
![]() |