我希望在我的Web应用程序中执行一些功能,而不需要让用户知道正在运行的过程,就像Windows应用程序中的后台进程一样。
当用户点击时,我想要触发后台进程,并且还想要向这些功能发送一些数据。
有人可以建议我如何执行此操作吗?
当用户点击时,我想要触发后台进程,并且还想要向这些功能发送一些数据。
有人可以建议我如何执行此操作吗?
private readonly BackgroundWorker backgroundWorker1 = new BackgroundWorker();
protected void Page_Load(object sender, EventArgs e)
{
this.backgroundWorker1.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorker1_DoWork);
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
try
{
timing();
}
catch
{
}
}
public void timing()
{
string tt = DateTime.Now.ToString("tt");
string t = "";
if (tt == "AM")
{
int hour = DateTime.Now.Hour;
if ((hour >= 0) & (hour <= 11))
{
t = "GOOD MORNING";
}
}
else if (tt == "PM")
{
int hour = DateTime.Now.Hour;
if ((hour >= 12) & (hour <= 15))
{
t = "GOOD AFTERNOON";
}
else if ((hour >= 16) & (hour <= 23))
{
t = "GOOD EVENING";
}
}
Label1.Text = t;
}
protected void Button1_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
}
//SOURCE:
<%@ Page Language="C#" Async="true" AutoEventWireup="true" CodeFile="background.aspx.cs" Inherits="background" %> //Async="true"
虽然它解决了一个更复杂的问题(当使用IoC时,对象生命周期被限定为请求时如何执行此操作),但本文中的AsyncRunner类是一个很好的起点。