سلام
با اینکه از زمان سوال خیلی گذشته ولی جواب زیر رو میزارم شاید واسه بعضی ها بدرد بخوره
اشکال مربوط به زمانی هست که در استفاده از نخ بخواهید مقداری رو بایند کنید بهش.
مثلا واسه مقدار دادن به یک تکست باکس این ارور واسه ما رخ داد، که با استفاده از کد زیر نتیجه درست شد:
قبلا از این خط کد برای مقدار دادن استفاده می کردیم که همین خط ارور میداد:
statusBox.Text = "" + (connections.ToString());
که به جای این خط از :
SetControlPropertyValue(statusBox, "Text", connections);
استفاده شد. و البته کد های زیر رو هم باید اضافه کنید:
delegate void SetControlValueCallback(Control oControl, string propName, object propValue);
private void SetControlPropertyValue(Control oControl, string propName, object propValue)
{
if (oControl.InvokeRequired)
{
SetControlValueCallback d = new SetControlValueCallback(SetControlPropertyValue);
oControl.Invoke(d, new object[] { oControl, propName, propValue });
}
else
{
Type t = oControl.GetType();
PropertyInfo[] props = t.GetProperties();
foreach (PropertyInfo p in props)
{
if (p.Name.ToUpper() == propName.ToUpper())
{
p.SetValue(oControl, propValue.ToString(), null);
}
}
}
}
البته بسته به نوع کنترل تون باید مقدار Text فرستاده در خط
SetControlPropertyValue(statusBox, "Text", connections);
رو تغیر بدبد .
مثلا برای progressBarباید value رو استفاده کنید.