フォームがすぐに表示されるようにするには、かなり簡単で、バックグラウンドスレッドは必要ありません。
私の推測では、フォームを読み込む前にすべてのデータを取得しているか、フォームを読み込む同じスレッドでデータを取得していると思います。残りのデータ(IDなど)を取得するために必要なデータをフォームに呼び出すことができます。
次に、フォームを作成するスレッド以外のスレッドでデータ処理を行う方法を見つけるだけで済みます。
これは最も洗練された解決策ではないかもしれませんが、それは仕事を完了します。それはあなたが取得しているデータのいくつかのセットを持っている場合は、各セットを取得するために、タスクのキューの設定を検討することをお勧めしますSystem.Windows.Forms.Timer
private void Form1_Load(object sender, EventArgs e)
{
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Stop();
//fill controls with data
}
を使用しています。
あなたがやっている方法。データがロードされていない場合は、エラーを引き起こす可能性のあるボタン(またはその他のui)を必ず無効にしてください。
編集:winformコントロールは常にスレッドでうまくいくとは限りません。 System.Windows.Forms.Timer
(System.Timers.Timer
とは対照的に)に関する素晴らしい点は、コントロールでうまくいくように設計されていることです。