Это quetion в продолжении на мой вопрос в this link.
Я написал приложение, чтобы сравнить подход, используемый там, другими способами. При запуске приложения в режиме отладки я получил сообщение об ошибке: «Invoke или BeginInvoke не могут быть вызваны на элемент управления до тех пор, пока не будет создан дескриптор окна». на первом BeginInvoke в методе UpdateCustDetails. Хотя при запуске кода без отладки он не дает никакой ошибки во время выполнения. Есть идеи??
Thanks, Abhi.
Ниже мой код: -
public delegate void UpdateLabelDelegate(Label lb, string text);
public delegate void loadCustomersDelegate();
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
loadCustomersDelegate del = new loadCustomersDelegate(UpdateCustDetails);
IAsyncResult ar = del.BeginInvoke(null, null);
while (!ar.IsCompleted)
{
}
}
public void updateLabel(Label lb, string text)
{
lb.Text = text;
}
public void UpdateCustDetails()
{
BeginInvoke(new UpdateLabelDelegate(updateLabel), new object[] { label1, "Test" });
BeginInvoke(new UpdateLabelDelegate(updateLabel), new object[] { label2, "Test1234" });
BeginInvoke(new UpdateLabelDelegate(updateLabel), new object[] { label3, "Test5678" });
BeginInvoke(new UpdateLabelDelegate(updateLabel), new object[] { label4, "Test0000" });
}
}
@ 366436 abhi где вы живете в Индии – 2010-08-06 08:22:33
Hi Steven, я из индейского происхождения, но в настоящее время базируюсь в Великобритании. –
Попробуйте переместить код из конструктора Form1 в onload-событие формы. (За исключением причины вызова InitializeComponents). – Alxandr