如何从C#中的方法创建窗口句柄

时间:2018-08-30 08:31:02

标签: c# multithreading winforms

我构建了一个C#Windows窗体应用程序,并且试图从一种方法将文本加载到toolstripsstatuslable中。但是,我从另一个外部线程调用了该方法,当我运行它时,它是一个错误;见下文。

Invoke or BeginInvoke cannot be called on a control until the window handle has been created.

这是我的方法。

public void loadNotification(string text)
{
    Invoke(new UpdateLabel(UpdateUI), text);
    statusStrip.Refresh();
}

它将调用此方法

private void UpdateUI(string labelText)
{
    MessageBox.Show("update ui");
    tssNotification.Text = labelText;
    //statusStrip.Refresh();
}

这是我线程的run()方法正在调用loadNotification()方法

public void Run()
{
    System.Windows.Forms.MessageBox.Show("this is System Thread");
    m = new MainInterface();
    Notifications ne = new Notifications(m.loadNotification);
    ne.Invoke("aksdjasd");
    Thread.Sleep(1000);
}

我知道问题不是创建窗口处理,如果我从loadNotification事件中调用此form_load方法,它将起作用,但我没有机会这样做。

我该如何解决这个问题。请帮帮我吗?

0 个答案:

没有答案