c# - BackGroundWorker 不在后台执行

标签 c# asp.net .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 ===================");
    }

最佳答案

BackgroundWorker 不能很好地与 ASP.NET 配合使用。

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

关于c# - BackGroundWorker 不在后台执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8231437/

上一篇:c# - 检查 'null'

下一篇:c# - 子串难度C#

相关文章:

c# - ASP.net 中的浏览器滚动条(如何设置)

c# - Entity Framework 6 中存储过程的执行是否需要调用 SaveChanges?

c# - 鼠标悬停时的图像在页面加载时占用空间

asp.net - 一页的 Infragistics 网格行选择正在模仿下一页

.net - .cshtml Razor 文件中的 TypeScript

c# - VS 2015 的应用程序目录中的缓存文件位于哪里?

javascript - 如何在asp.net中将下拉列表中的复选框的选定选项显示到文本框

.net - dll 的 FileVersion 和 ProductVersion 之间有什么区别?

ASP.NET 将 DbContext 注入(inject) Identity UserManager

c# aws lambda dll 引用问题