0

2 番目のスレッドを開始する 1 つの Web フォームを取得しました。新しいスレッドを開始すると、選択された値が 1 の DropDownList が Web フォームにあり、スレッド関数は使用して値を取得します

((DropDownList)Page.FindControl("MLprice2_" + _lineRef)).SelectedItem.Value)

これらは問題なく動作します。たとえば、使用しているスレッドの関数で DropDownList の値を 5 に変更すると問題が発生します。

((DropDownList)Page.FindControl("MLprice2_" + _lineRef)).SelectedItem.Value)

5ではなく値1を取得します。

助けてください

4

1 に答える 1

0

Web ページのライフ サイクルで 2 番目のスレッドを開始すると、おそらく、2 番目のスレッドが処理を完了する前に、Web ページのライフ サイクルがすでに終了している可能性があります。Web ページは 2 番目のスレッドによって何らかの形で参照されているため (そこで Web ページを更新しているため)、ガベージ コレクションが行われません。ただし、クライアントはレンダリングされた Web ページを既に受け取っている可能性が高いため、2 番目のスレッドの結果はクライアントに届きません。サーバー (メモリ内) で更新されますが、クライアントでは更新されません。

別のアプローチが必要だと思います。レンダリングされたページがドロップダウンリストを5に設定する信号を受信するには、追加の非同期通信および/またはページ更新(ajaxが思い浮かびます)を行う必要があります。

于 2012-07-04T05:59:37.093 に答える