Здравствуйте, Аноним, Вы писали:
А>сейчас, для обращения к элементам формы, для каждой функции приходится создавать прокси-функцию с проверкой InvokeRequired и вызовом Invoke.
А>самое утомительное в данном случае — необходимость объявлять делегаты для каждой функции, со временем их накапливается столько, что рябит в глазах.
А>существует ли более лаконичный способ?
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
internal void Print(string s)
{
textBox1.Text = s;
}
private void button1_Click(object sender, EventArgs e)
{
new a(this).Go();
}
}
class a
{
Form1 f;
public a(Form1 f) { this.f = f; }
internal void Go()
{
new Thread(delegate()
{
f.Invoke(new MethodInvoker(delegate()
{
f.Print("fadsfsdf");
}));
}).Start();
}
}
public partial class Form1 : Form
{
private SynchronizationContext cont;
public Form1()
{
InitializeComponent();
cont = SynchronizationContext.Current;
}
private void button1_Click(object sender, EventArgs e)
{
new Thread(delegate()
{
cont.Post(delegate(Object o)
{
this.label1.Text = (string)o;
}, "blablabla");
}).Start();
}
}