私はいくつかのデータを持っており、タスクでそれを更新します。アプリは現時点ではアイデアのハックであるため、コードについてはお詫びします。
Task.Factory.StartNew(() =>
{
dataGridView1.BeginInvoke((Action)(() =>
{
dataGridView1.SuspendLayout();
}));
dataSet1.Reset();
da.Fill(dataSet1);
dataGridView1.BeginInvoke((Action)(() =>
{
dataGridView1.DataSource = dataSet1.Tables[0];
dataGridView1.Columns[0].Visible = false;
dataGridView1.Columns[1].Width = 50;
dataGridView1.ResumeLayout();
}));
}
).ContinueWith(task =>
{
if (dataSet1.Tables[0].Rows.Count > 0)
{
if (lastcount != dataSet1.Tables[0].Rows.Count)
{
lastcount = dataSet1.Tables[0].Rows.Count;
if (lastcount == 0)
{
NotifyWithMessage("The items have been cleared", "Items cleared");
}
else
{
NotifyWithMessage(String.Format("There are {0} new items in your monitor", dataSet1.Tables[0].Rows.Count));
}
}
}
}
);
これで、コードは基本的に機能します。エラーはありません。これは素晴らしいことです。
タスクの外で更新されたとき、datavgridview のフラッシュはまったくありませんでした。デバッグで実行すると、それは非常にマイナーであり、ハッキングの許容範囲内です..デバッグの外で実行した瞬間...それは非常に明白です! 一時停止と再開のレイアウトは、まったく違いはありません。UI がなくてもゴツゴツ反応するため、スレッドにコードが必要ですが、それは許容できますが、現在はリフレッシュが悪いです。
私の Datagridview は、セルの色に応じてカスタム色付けされていますが、デバッグとリリースに違いがある理由がわかりません。逆のパフォーマンスが期待できます!
(私は Invoke と BeginInvoke を試しました...)
2 つの画面のうちの 1 つで DataGridView の恐ろしい再描画パフォーマンスを見ました
そして、デバッグ中、これは少しもちらつきません...リリース状態では、ばかげたちらつきがあります...
私に何ができる?