解决子窗体进行大数据查询时主窗体卡顿的问题
主窗体:
private void DataCollect_Load(object sender, EventArgs e)
{
//显示当前的线程 效果代码 实际项目不需要
int threadId = Thread.CurrentThread.ManagedThreadId;
this.Text = threadId.ToString();
}
子窗体: 窗体名称Quary
private void Quary_Load(object sender, EventArgs e)
{
//显示当前的线程 效果代码 实际项目不需要
int threadId = Thread.CurrentThread.ManagedThreadId;
this.Text = threadId.ToString();
}
主窗体点击打开子窗体按钮 打开Quary窗体
private void 汇总查询ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form f = Application.OpenForms["Quary"];
if (f == null) //没打开过
{
// 新建了一个线程
Thread t = new Thread(()=>OpenForm());
// 加上这句话!不然可能提示DragDrop 注册失败。
//在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。
//请确保您的 Main 函数带有 STAThreadAttribute 标记。
t.SetApartmentState(ApartmentState.STA);
t.Start();
}
else
{
this.Invoke((EventHandler)delegate
{
f.Focus();
f.Activate();
});
}
}
private void OpenForm()
{
Application.Run(new Quary());
}
//退出系统(其他线体的窗体可能在开启中,必须使用这个退出)
System.Environment.Exit(0);