在asp.net中使用线程
做一个任务类,在客户端时时(暂且刷新时间为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>
后台
先是一些类的申明:
protected System.Web.UI.WebControls.Button btn_startwork;
protected System.Web.UI.WebControls.Label lab_state;
//前面2个是vs.net自己生成的
protected work w;
在Page_Load里面输入以下代码:
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.RegisterStartupScript("","<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;
}
}
在按钮单击事件内输入以下代码:
if(w.State!=1)
{
this.btn_startwork.Enabled=false;
w.runwork();
Page.RegisterStartupScript("","<script>location.href=location.href;</script>");
//立即刷新页面
}
另外建立一个任务类,代码如下:
public class work
{
public int State=0;//0-没有开始,1-正在运行,2-成功结束,3-失败结束
public DateTime StartTime;
public DateTime FinishTime;
public DateTime ErrorTime;
public void runwork()
{
lock(this)//确保临界区被一个Thread所占用
{
if(State!=1)
{
State=1;
StartTime=DateTime.Now;
System.Threading.Thread thread=new System.Threading.Thread(new System.Threading.ThreadStart(dowork));
thread.Start();
}
}
}
private void dowork()
{
try
{
SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
SqlCommand cmd=new SqlCommand("Insert Into test (test)values('test')",conn);
conn.Open();
for(int i=0;i<5000;i++)cmd.ExecuteNonQuery();
conn.Close();
//以上代码执行一个比较消耗时间的数据库操作
State=2;
}
catch
{
ErrorTime=DateTime.Now;
State=3;
}
finally
{
FinishTime=DateTime.Now;
}
}
}
}
运行这个页面,看到每秒页面刷新一次反馈任务执行到现在的时间,在结束后给出任务总的用时。(如果任务出错也给出出错时间)
在asp.net中使用线程相关推荐
- 搜集《ASP.NET中常用的26个优化性能方法》
1. 数据库访问性能优化 a.数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源.ASP.NET中提供了连接 ...
- [转帖]ASP.NET中常用的优化性能的方法
ASP.NET中常用的优化性能的方法(转贴,Icyer收集整理) 1. 数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要 ...
- 在 ASP.NET 中使用 HTTPHandler 实现 Front Controller
http://msdn.microsoft.com/zh-cn/library/ms998532.aspx 背景信息 示例有助于解释如何在 ASP.NET 中实现 Front Controller,并 ...
- ASP.NET中常用的26个优化性能方法(转)
1. 数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源.ASP.NET中提供了连接池( ...
- 【分析总结】ASP.NET中的状态管理原理
HTTP协议是介于请求.响应的断开时网络协议,与连接式的网络协议不同,例如,与我们熟悉的TCP协议相比,客户端与服务器并没有持续的连接存在,在每一次会话之后,连接都会被断开,在下一次请求的时候客户端会 ...
- ASP.NET中application对象的用法(面试题)
ASP.NET中application对象的用法 本文导读:Application对象是HttpApplicationState类的一个实例,Application状态是整个应用程序全局的.Appli ...
- 【转】C#中的线程 入门
Keywords:C# 线程 Source:http://www.albahari.com/threading/ Author: Joe Albahari Translator: Swanky Wu ...
- ASP.NET中常用的26个优化性能方法
1. 数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源.ASP.NET中提供了连接池( ...
- ASP.NET中进行消息处理(MSMQ) 三
在本文的前两篇文章里对MSMQ的相关知识点进行了介绍,很多阅读过这前两篇文章的朋友都曾问到过这样一些问题: 1.如何把MSMQ应用到实际的项目中去呢? 2.可不可以介绍一个实际的应用实例? ...
最新文章
- python拆堆和堆叠的操作_堆叠框架的Python / Tkinter退出按钮
- 应用Mongoose开发MongoDB(2)模型(models)
- (JAVA学习笔记) 类与对象小结
- QImage 与 cv::Mat 之间的相互转换
- “悟道”公开课第四讲丨悟道开发案例:​悟空策论——议论文写作平台
- 端口聚合Port-Channel
- 【容器云】十分钟快速构建 Influxdb+cadvisor+grafana 监控
- java httpurlconnection 设置编码_java – 通过HttpURLConnection发送UTF-8字符失败
- Qt QString 与 const char* 类型的转换
- 梧桐计划发布!百度智能云携手合作伙伴共创“云智一体”繁荣新生态
- 全国哀悼日,网站变黑白完美兼容IE,亲测有效
- NYOJ 吃土豆(动态规划)
- HFSS同轴馈电矩形贴片天线馈电点以及尺寸的计算
- rhel centos 源_Rhel centos 7的fips脚本
- CentOS 7 使用 Nginx 搭建视频点播服务器
- Hadoop大数据基础知识点总结--持续更新
- mysql nb3 备份_通过Navicat进行Mysql数据库自动备份与还原
- Go实战--golang中获取公网ip、查看内网ip、检测ip类型、校验ip区间、ip地址string和int转换、根据ip判断地区国家运营商等
- 模块递归拆分法: 设计模式 设计原则,复杂层次设计举例。系统重构 装饰模式,门面模式,代理模式
- PHP 实现中文分词搜索功能