データグリッドにバインドされたデータセットがあります。データセットには、データの状態を保持する列があります。ページの読み込み時に、「保留中」の値があります。
サードパーティのソフトウェアとやり取りすると、その値が「成功」または「失敗」のいずれかで更新されます。ただし、これらの変更は、すべてのトランザクションが完了するとデータグリッドに反映されます。
スレッドを使用して、トランザクションごとに更新されたすべての結果を表示したい。
コードを教えてください。
前もって感謝します
データグリッドにバインドされたデータセットがあります。データセットには、データの状態を保持する列があります。ページの読み込み時に、「保留中」の値があります。
サードパーティのソフトウェアとやり取りすると、その値が「成功」または「失敗」のいずれかで更新されます。ただし、これらの変更は、すべてのトランザクションが完了するとデータグリッドに反映されます。
スレッドを使用して、トランザクションごとに更新されたすべての結果を表示したい。
コードを教えてください。
前もって感謝します
別のスレッドから DataSet を更新することはできません。これを行うと、アプリケーションで Cross Thread 操作の例外が発生します。私が見る最善の方法は、バックグラウンド スレッドで必要なステータスを計算し、メイン スレッドで DataSet を更新することです。これがアプリケーションのパフォーマンスに影響することはありません。サンプルコードは次のとおりです。
...
ThreadStart ts = new ThreadStart(UpdateStatuses);
Thread thread = new Thread(ts);
thread.Start();
...
void UpdateStatuses() {
// calculate statuses ;
BeginInvoke(new MethodInvoker(delegate {
for(int i = 0; i < table.Rows.Count; i++)
table.Rows[i]["Status"] = someValue;
}));
}