1

継承したいくつかのコードを実行します。ページには更新パネルがあり、その中にタイマー コントロールがあります。

 <asp:UpdatePanel ID="UpdatePanel1" runat="server">
  <asp:Timer ID="process" runat="server" Interval="1500" OnTick="process_Tick">
  </asp:Timer>
 </asp:UpdatePanel>

タイマーの tick イベントの開始時のコード ビハインド:

  protected void process_Tick(object sender, EventArgs e)
    {
        process.Enabled = false;

タイマーは無効になっています..おそらく、ティックが1回だけ発生するようになっています。イベントの後半で、スレッドをスリープ状態にして処理を待機させる場所が少なくとも 2 つあります。

Thread.Sleep(18000);

そしてまた

Thread.Sleep(10 * 1000);

これらの 2 つのスレッドはしばらく処理を停止しますが、異なるスレッドでポストバックを引き起こし、各スレッドで tick イベントが発生します....

これらのスレッドが作成され、tick イベントを何度も発生させないようにする方法。このコードが原因で、フォームが数回送信されます。

どんな助けでも大歓迎です。

4

1 に答える 1

2

AsyncPostBackTimeout 属性を ScriptManager に追加しました。デフォルトでは、90 秒後にタイムアウトします。そのため、タイムアウトを増やすことで、タイマーの Tick イベントが何度もトリガーされることはありませんでした。

  <asp:ScriptManager ID="ScriptManager1" runat="server" AsyncPostBackTimeout="400" >
</asp:ScriptManager>
于 2012-08-29T18:37:45.260 に答える