Control.Invoke を使用してワーカー スレッドから GUI コントロールを更新することに関して、SO には多くの質問/回答がありますが、更新せずにコントロールからデータを読み取るというトピックを明確にすることができませんでした。
例: Windows フォームに DataGridView があります。ワーカー スレッドから、DGV 上の特定のセルの値を確認したいのですが、値を更新する必要はありません。ワーカー スレッドから、唯一のパラメーターとして DataGridView オブジェクトを受け取るメソッドを呼び出し、メソッドは DataGridView 内の特定のセルを調べますが、変更はしません。この場合、.Invoke を使用する必要がありますか?
現在、コードは .Invoke を使用せずに明らかな警告なしで正常に実行されているように見えます。ただし、DGV を更新するのではなく、DGV のセルを変更せずに見るだけなので、これが安全かどうかはわかりません。
誰かがこれに光を当てることができますか?これが重複した質問である場合は申し訳ありませんが、マルチスレッドの状況で更新/変更せずにコントロールを読み取るだけに焦点を当てた他の質問は見つかりませんでした。
ありがとう。
ワーカー スレッドから呼び出されるメソッドの例:
private DataGridViewRow getRowObject(DataGridView dgv)
{
foreach (DataGridViewRow row in dgv.Rows)
{
if ((int)dgv[specialColumn, row.Index].Value == 100)
return row;
}
}