當我在窗體初始化後運行代碼時,它以我想要的方式工作。但是,當我在form Load
事件中第一次加載它時,它滯後於繪圖一秒的UI。我不想做一個啓動畫面,因爲已經有一些UI元素表明工作正在進行。線程在窗體加載滯後UI
volatile bool ABfired = false;
public form_Main()
{
InitializeComponent();
}
void GetSearchableDataCache()
{
this.UIThread(() =>
{
ultraActivityIndicator1.AnimationEnabled = true;
ultraLabel_Status.Text = "Querying SQL...";
});
var projids = new List<string>();
var names = new List<string>();
ABfired = false;
Thread A = (new Thread(() =>
{
while (!ABfired)
{
}
projids = new sql.ProjectIDs(true).Get();
})
{
Name = "Thread A", IsBackground = true
});
Thread B = (new Thread(() =>
{
while (!ABfired)
{
}
names = new sql.names(true).Get();
})
{
Name = "Thread B", IsBackground = true
});
Thread AB = (new Thread(() =>
{
ABfired = true;
while (A.IsAlive || B.IsAlive)
{
}
this.UIThread(() =>
{
ultraActivityIndicator1.AnimationEnabled = false;
ultraLabel_Status.Text = "Ready";
});
})
{
Name = "Thread AB", IsBackground = true
});
A.Start();
B.Start();
AB.Start();
}
private void form_Main_Load(object sender, EventArgs e)
{
GetSearchableDataCache();
}
謝謝,這似乎工作。事實證明,我正在使用的控件往往滯後於自己。但我學到了一些有價值的東西。 – Jai