当我启动主线程时,我也启动了第二个线程,但第二个线程仍然等待主线程。我期望当我开始一个新的线程时,它会在没有连接到主线程的情况下工作。那么为什么panel1
在主线程完成其工作之后变得可见?如果第二个线程等待主线程
private void comboBox1_SelectedIndexChanged_1(object sender, EventArgs e)
{
Thread thread = new Thread(new ThreadStart(threadUI));
thread.Start();
// This class is loading something from the server on the main thread
excel.get_data_from_excel(comboBox1.SelectedItem.ToString(), this);
}
private void threadUI()
{
if (panel1.InvokeRequired)
{
panel1.Invoke(new newDelegate(threadUI));
}
else
{
panel1.Visible = true;
}
}
我将那行改成这样:PANEL1。BeginInvoke(new newDelegate(threadUI)); //但它仍在等待mainThread变为可见 – Toprak
这不会帮助他解决他的问题。如果没有通过使用'BeginInvoke'阻止第二个线程将会修改问题的一个症状而不解决根本问题。 – Servy
查看我的编辑。我认为你有比Invoke/BeginInvoke更大的问题。 –