asp.net利用多線程執行長時間的任務,客戶端顯示出任務的執行進度的示例
2007/1/3 22:33:02

在asp.net中執行一個長時間的操作,有的時候需要在在客戶端有一個反饋能了解到任務的執行進度,大致看了一下有這么幾種做法:
(1)按下按鈕的時候給出一個<div>提示正在執行任務,執行完畢讓這個<div>隱藏
(2)按下按鈕的時候跳轉到一個提示任務正在執行的頁面,執行完畢了再跳轉回來
(3)做一個任務類,開啟另外一個線程執行任務,同時在客戶端或者服務器端保存這個類的實例來跟蹤任務的執行情況
(1)和(2)的情況用的比較多,也比較簡單,缺點是不能實時的知道任務的執行進度,而且時間一長可能會超時,(3)的方法就會比較好的解決上面說的2個缺點。下面著重說一下(3)的實現方法,先從簡單開始,我們做一個任務類,在客戶端時時(暫且刷新時間為1秒)得知任務執行了多少時間,并且在成功完成任務后給出執行時間,在任務出錯的時候給出出錯的時間。
前臺
<form id="form1" method="post" runat="server">
<asp:label id="lab_state" runat="server"></asp:label><br>
<asp:button id="btn_startwork" runat="server" text="運行一個長時間的任務"></asp:button>
</form>
后臺

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace test20061027
{
/// <summary>
/// WebForm1 的摘要說明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
  protected System.Web.UI.WebControls.Button btn_startwork;
  protected System.Web.UI.WebControls.Label lab_state;
  protected work w;

  private void Page_Load(object sender, System.EventArgs e)
  {
  if(Session["work"]==null)
  {
    w=new work();
    Session["work"]=w;
  }
  else
  {
    w=(work)Session["work"];
  }
  switch(w.state)
  {
    case 0:
    {
    this.lab_state.Text="還沒有開始任務";
    break;
    }
    case 1:
    {
    this.lab_state.Text="任務進行了"+((TimeSpan)(DateTime.Now-w.starttime)).TotalSeconds+"秒";
    this.btn_startwork.Enabled=false;
    Page.RegisterClientScriptBlock("","<script>window.settimeout('location.href=location.href',1000);</script>");
    //不斷的刷新本頁面,隨時更新任務的狀態
    break;
    }
    case 2:
    {
    this.lab_state.Text="任務結束,并且成功執行所有操作,用時"+((TimeSpan)(w.finishtime-w.starttime)).TotalSeconds+"秒";
    this.btn_startwork.Enabled=true;
    break;
    }
    case 3:
    {
    this.lab_state.Text="任務結束,在"+((TimeSpan)(w.errortime-w.starttime)).TotalSeconds+"秒的時候發生錯誤導致任務失敗";
    this.btn_startwork.Enabled=true;
    break;
    }
  }
  }
  #region Web 窗體設計器生成的代碼
  override protected void OnInit(EventArgs e)
  {
  //
  // CODEGEN: 該調用是 ASP.NET Web 窗體設計器所必需的。
  //
  InitializeComponent();
  base.OnInit(e);
  }
 
  /// <summary>
  /// 設計器支持所需的方法 - 不要使用代碼編輯器修改
  /// 此方法的內容。
  /// </summary>
  private void InitializeComponent()
  {   
  this.btn_startwork.Click += new System.EventHandler(this.btn_startwork_Click);
  this.Lo

下一頁
返回列表
返回首頁 主站蜘蛛池模板: 精品视频第一页| 99久久国产综合精品1尤物| 欧美亚洲国产一区二区三区| 免费无码成人AV片在线在线播放| 高潮内射免费看片| 国产精品国产亚洲精品看不卡| 亚洲精品第二页| 美女内射无套日韩免费播放| 国产国产成人久久精品杨幂| 草草影院www色欧美极品| 在线精品小视频| 一区二区三区免费视频网站| 教师mm的s肉全文阅读| 久久婷婷是五月综合色狠狠 | 777奇米视频| 天天操天天干天天干| 七次郎在线视频永久地址| 无限在线观看下载免费视频 | 欧美日韩一品道| 亚洲色偷偷色噜噜狠狠99| 秋霞午夜在线观看| 又粗又长又硬太爽了视频快来| 777奇米影视网| 大学生被内谢粉嫩无套| аⅴ天堂中文在线网| 成人精品一区二区三区中文字幕| 久久人人爽人人爽人人片av高请| 本子库全彩无遮挡无翼乌触手| 亚洲成人第一页| 欺凌小故事动图gif邪恶| 人人公开免费超级碰碰碰视频 | 国产亚洲欧美日韩精品一区二区| 狠狠色香婷婷久久亚洲精品| 国产精品久久久久…| 3p视频在线观看| 国产自产在线视频一区| 99久久亚洲精品无码毛片| 天天影院成人免费观看| www.伊人.com| 好硬好湿好大再深一点动态图| 三级波多野结衣护士三级|