如何在ASP.Net Web应用程序中运行后台进程

3
我希望在我的Web应用程序中执行一些功能,而不需要让用户知道正在运行的过程,就像Windows应用程序中的后台进程一样。
当用户点击时,我想要触发后台进程,并且还想要向这些功能发送一些数据。
有人可以建议我如何执行此操作吗?

http://www.codeproject.com/Articles/349139/Running-a-background-service-in-a-Web-Application - Rahul
我已经尝试过这个,但在我的情况下不起作用,因为我想在用户单击时触发后台进程,并且还想将一些数据发送到这些函数。 - Arjun Sharma
http://www.dotnetfunda.com/articles/article613-background-processes-in-asp-net-web-applications.aspx - mck
3个回答

3
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"

5
我觉得这段代码整洁而且简洁,但你需要说明这段代码需要在哪里实现。 - Vikneshwar
1
这段代码看起来很好,但是没有解释,也没有后台工作器的定义。它是从 .Net 导入的吗?您自己编写了这个类吗?否则,这些都是其他人需要知道的信息,否则你会留下解释的空间,从而导致失败和错误,进而使人们对这个问题持怀疑和不确定的态度,这将伤害您的声誉。请修复它,让我知道什么时候完成,我会投赞成票而不是反对票。 - Richard Barker

0

虽然它解决了一个更复杂的问题(当使用IoC时,对象生命周期被限定为请求时如何执行此操作),但本文中的AsyncRunner类是一个很好的起点。

使用Autofac从MVC操作开始后台任务



网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接