私はdatagridviewを持っており、データソースをロードするのに時間がかかります。私はそれのための読み込みをしたいとバックグラウンドワーカーと非同期awaitとtask.factory.startnewとtask.runを試してみました...しかし、datagridviewは、私の読み込みのGIFを凍結されます充填されます。ガードビューがいっぱいになるとロードがフリーズします
どうすればよいですか?
私は多くのグーグルグーグルで、テキストを見ました。彼らは私たちがただ一つのUIスレッドを持っていると言いました。 私はこのような状況のような多くのポストを見てきました。私は5日間それらを試しましたが失敗しました。多分私は見ることができない明確なことがあります。
例えば、それはGIFをロードしているとリッチテキストボックスが充填されている状況のようなものです: 我々は
private void button1_Click (object sender, EventArgs e)
{
Task.Factory.StartNew(()=>;
{
huge();
}
);
}
private void huge()
{
richTextBox1.Invoke(new EventHandler(delegate
{
for (int i = 0; i < 10000; i++)
{
richTextBox1.Text += "s";
}
}));
pictureBox1.Visible = false;
}
バックグラウンドワーカーを使用すると、ロックの問題が解決するはずです。ロードするコードが本当にbackgroundworkerにあることを確認してください。 – jdweng
あなたのメソッドでは、UIスレッドが 'Invoke'を使ってタスクを実行しているので、UIスレッドはビジー状態を維持します。非同期/待機パターンを使用できます。 [this post](http://stackoverflow.com/a/39142535/3110834)が役に立つかもしれません。 –
これをクリックで追加します。 BackgroundWorker bg = new BackgroundWorker(); bg.DoWork + = bg_DoWork; bg.RunWorkerAsync(); と同じ起こったagian。@ jdweng – Farshad