BackGroundWorker不在后台执行

Sha*_*owG 1 .net c# asp.net

当我加载页面时,我只能在后台工作程序进程完成后导航...如果它在后台执行,就像名字所说的那样?

这是代码:

    protected void Page_Load(object sender, EventArgs e)
    {
        BackgroundWorker _bgk = new BackgroundWorker();
        _bgk.DoWork += new DoWorkEventHandler(DoWork_BackGroundWork);
        _bgk.RunWorkerCompleted += new RunWorkerCompletedEventHandler(WorkComplete_BackGroundWork);
        _bgk.RunWorkerAsync();
    }

    private void DoWork_BackGroundWork(object sender, DoWorkEventArgs e)
    {
        for (int i = 0; i < 99999; i++)
        {
            Trace.Write("STILL EXECUTING BACKGROUND WORKER");
        }
    }

    private void WorkComplete_BackGroundWork(object sender, RunWorkerCompletedEventArgs e)
    {
        Trace.Write("===================== BACKGROUND WORKER FINISHED ===================");
    }
Run Code Online (Sandbox Code Playgroud)

Bry*_*sby 6

BackgroundWorker 不能很好地与ASP.NET一起使用.

最重要的是,除非你喜欢玩火,否则启动后台线程会让IIS可以在你不知道的情况下回收你的线程.最好不要在ASP.NET环境中使用这种类型的线程(不是说永远,但要正确起来可能很棘手)