-1

データグリッドにバインドされたデータセットがあります。データセットには、データの状態を保持する列があります。ページの読み込み時に、「保留中」の値があります。

サードパーティのソフトウェアとやり取りすると、その値が「成功」または「失敗」のいずれかで更新されます。ただし、これらの変更は、すべてのトランザクションが完了するとデータグリッドに反映されます。

スレッドを使用して、トランザクションごとに更新されたすべての結果を表示したい。

コードを教えてください。

前もって感謝します

4

1 に答える 1

2

別のスレッドから 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;
            }));
        }
于 2013-01-07T13:51:48.760 に答える