难题求解,客户端引发服务器端事件的问题 项目中遇到这样一个问题:客户上传完文件后,我需要接着执行一个动作,这个动作可能执行的时间很长很长,那么客户端在这个执行过程中一直是处于页面正在刷新的状态(很可能超时)。请问高手,有没有一种方法,让这个动作仅在服务器端执行,客户端不察觉? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你可以考虑使用两种技术中的其中一种一是 C#后台的多线程技术二是 Ajax技术第一种线程技术的例子:前台:<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="测试多线程控制.WebForm1" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" ><HTML> <HEAD> <title>WebForm1</title> <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1"> <meta name="CODE_LANGUAGE" Content="C#"> <meta name="vs_defaultClientScript" content="JavaScript"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> </HEAD> <body MS_POSITIONING="GridLayout"> <form id="Form1" method="post" runat="server"> <FONT face="宋体"> <asp:Button id="Button1" style="Z-INDEX: 101; LEFT: 328px; POSITION: absolute; TOP: 64px" runat="server" Text="测试"></asp:Button> <asp:Label id="Label1" style="Z-INDEX: 102; LEFT: 128px; POSITION: absolute; TOP: 72px" runat="server">Label</asp:Label></FONT> </form> </body></HTML>后台:using System;using System.Collections;using System.ComponentModel;using System.Data;using System.Data.SqlClient;using System.Drawing;using System.Web;using System.Web.SessionState;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.HtmlControls;using System.Threading;using Microsoft.ApplicationBlocks.Data;namespace 测试多线程控制{ /// <summary> /// WebForm1 的摘要说明。 /// </summary> public class WebForm1 : System.Web.UI.Page { protected System.Web.UI.WebControls.Button Button1; Thread t1; Thread t2; private void Page_Load(object sender, System.EventArgs e) { // 在此处放置用户代码以初始化页面 } #region Web 窗体设计器生成的代码 override protected void OnInit(EventArgs e) { // // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。 // InitializeComponent(); base.OnInit(e); } /// <summary> /// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。 /// </summary> private void InitializeComponent() { this.Button1.Click += new System.EventHandler(this.Button1_Click); this.Load += new System.EventHandler(this.Page_Load); } #endregion private void Button1_Click(object sender, System.EventArgs e) { t1=new Thread(new ThreadStart(Search)); t2=new Thread(new ThreadStart(ShowAndHidden)); Response.Write("<table id=table1 width=300 height=200 bgcolor=yellow align=center border=2><tr><td id=td1 width=80% bgcolor=red>测试调用</td></tr></table>"); t1.Start(); t2.Start(); t2.Join(); } public void Search() { SqlConnection myConnection=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectString"].ToString()); DataSet ds=new DataSet(); ds=SqlHelper.ExecuteDataset(myConnection,CommandType.StoredProcedure,"ArticleGetPop"); string arg=ds.Tables[0].Rows[0][0].ToString(); Response.Write(arg); } public void ShowAndHidden() { t1.Join(); Response.Write("<script>document.getElementById('td1').style.cssText='display :none;';</script>"); } }}第二种Ajax技术网上就很多雷同的例子了,你可以找找你认为跟你需求相近的改改! a标签中的title属性能不能定记显示时间 不能更新。数据库或对象为只读。 Ucenter 多点登陆 .net做多语言前台图片如何切换? 一个小问题但也耗费了我一天的时间,还是来csdn求救吧。 有谁知道Daab中Oracle怎么联啊,救命啊??? 上传文件 麻烦帮写个代码 DataGrid中多列显示同一字段的问题? 用VS2编译ASP.NET提示说“无法在WEB服务器上启动调试。请验证是否已指定有效的URL“ htmlbutton 的单击事件???菜鸟问题!各位帮帮忙 急。ASP。NET+SQL开发系统时碰到的问题
一是 C#后台的多线程技术
二是 Ajax技术第一种线程技术的例子:
前台:
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="测试多线程控制.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<asp:Button id="Button1" style="Z-INDEX: 101; LEFT: 328px; POSITION: absolute; TOP: 64px" runat="server"
Text="测试"></asp:Button>
<asp:Label id="Label1" style="Z-INDEX: 102; LEFT: 128px; POSITION: absolute; TOP: 72px" runat="server">Label</asp:Label></FONT>
</form>
</body>
</HTML>后台:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Threading;
using Microsoft.ApplicationBlocks.Data;namespace 测试多线程控制
{
/// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button Button1;
Thread t1;
Thread t2;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion private void Button1_Click(object sender, System.EventArgs e)
{
t1=new Thread(new ThreadStart(Search));
t2=new Thread(new ThreadStart(ShowAndHidden));
Response.Write("<table id=table1 width=300 height=200 bgcolor=yellow align=center border=2><tr><td id=td1 width=80% bgcolor=red>测试调用</td></tr></table>");
t1.Start();
t2.Start();
t2.Join();
} public void Search()
{
SqlConnection myConnection=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectString"].ToString());
DataSet ds=new DataSet();
ds=SqlHelper.ExecuteDataset(myConnection,CommandType.StoredProcedure,"ArticleGetPop");
string arg=ds.Tables[0].Rows[0][0].ToString();
Response.Write(arg);
} public void ShowAndHidden()
{
t1.Join();
Response.Write("<script>document.getElementById('td1').style.cssText='display :none;';</script>");
} }
}第二种Ajax技术网上就很多雷同的例子了,你可以找找你认为跟你需求相近的改改!