LoadNewQCDetails();
のメソッドが進行中の間にフォームをフリーズしようとしています。 LoadNewQCDetails();
メソッドの完了後にUIが無効/中断されても、ユーザーによるすべてのクリックイベントが発生します。したがって、 LoadNewQCDetails();
プロセスが完了するまで、ユーザーがUI内の何かをクリックできないようにフォームをフリーズする必要があります。フリーズするウィンドウのフォームC#
マイコード:
private void button5_Click(object sender, EventArgs e)
{
//this.SuspendLayout();
//this.Enabled = false;
button3.Enabled = false;
tabControl1.Enabled = false;
groupBox1.Enabled = false;
groupBox2.Enabled = false;
groupBox3.Enabled = false;
GlobalVariable.RefreshArtiCnt = 0;
if (comboBox2.Text != "")
{
// LoadAllQCDetails();
//this function takes nearly 1 minute to complete task
LoadNewQCDetails();
}
else
{ MessageBox.Show("Data not found for this condition", "Alert"); }
button3.Enabled = true;
tabControl1.Enabled = true;
groupBox1.Enabled = true;
groupBox2.Enabled = true;
groupBox3.Enabled = true;
//this.Enabled = true;
// this.ResumeLayout();
}
フォームが完全に読み込まれるまでフォームを表示しないでください。長いコードを 'OnShowing'イベントに追加して、データが大きい場合にはasyncをロードするように呼び出すことができます。バム...!シンプルな修正、またはこのメソッドが 'LoadNewQCDetails();を完了するのに時間がかかる場合、タイマー付きのカスタムフォームを作成し、ShowDialog()メソッドを使用してそのフォームモーダルを表示し、エンドユーザーに辛抱強くなるよう警告します読み込みに数分かかります.. 'LoadNewQCDetails();'メソッドはどのように見えますか?最初に非同期にロードすることができます – MethodMan
はLoadNewQCDetailsに大きなループまたはクエリが含まれていますか? –