當我啓動主線程時,我也啓動了第二個線程,但第二個線程仍然等待主線程。我期望當我開始一個新的線程時,它會在沒有連接到主線程的情況下工作。那麼爲什麼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更大的問題。 –