Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# BackGroundWorker未在后台执行_C#_Asp.net_.net - Fatal编程技术网

C# BackGroundWorker未在后台执行

C# BackGroundWorker未在后台执行,c#,asp.net,.net,C#,Asp.net,.net,当我加载页面时,我只能在后台工作进程完成后导航。。。它应该像名字说的那样在后台执行吗 代码如下: protected void Page_Load(object sender, EventArgs e) { BackgroundWorker _bgk = new BackgroundWorker(); _bgk.DoWork += new DoWorkEventHandler(DoWork_BackGroundWork); _bgk

当我加载页面时,我只能在后台工作进程完成后导航。。。它应该像名字说的那样在后台执行吗

代码如下:

    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 ===================");
    }
受保护的无效页面加载(对象发送方,事件参数e)
{
BackgroundWorker_bgk=新的BackgroundWorker();
_bgk.DOWERK+=新的DOWERKEVENTHANDLER(DOWERK_基础);
_bgk.RunWorkerCompleted+=新的RunWorkerCompletedEventHandler(WorkComplete\u后台工作);
_bgk.RunWorkerAsync();
}
私有无效DoWork_后台工作(对象发送方,DoWorkEventArgs e)
{
对于(int i=0;i<99999;i++)
{
Trace.Write(“仍在执行后台工作程序”);
}
}
私有void WorkComplete\u后台工作(对象发送方、RunWorkerCompletedEventArgs e)
{
Trace.Write(“===========================================后台工作人员已完成===================================”);
}

BackgroundWorker
仅适用于Windows窗体,不适用于ASP.NET


除非您是多线程专家,否则最好不要在ASP.NET中使用任何后台线程。

BackgroundWorker
仅适用于Windows窗体,不适用于ASP.NET


除非您是多线程方面的专家,否则最好不要在ASP.NET中使用任何后台线程。

BackgroundWorker仅设计用于使用
WindowsForms


如果要模拟相同的功能,请使用
线程
,但在ASP.NET中使用线程时要小心,确保所做的操作不会影响客户机与服务器之间的通信。

BackgroundWorker仅设计为使用
Windows窗体
工作


如果要模拟相同的功能,请改用
线程
,但在ASP.NET中使用线程时要小心,确保所做的操作不会影响客户端与服务器之间的通信。

BackgroundWorker
与ASP.NET的配合不太好


除此之外,除非你喜欢玩火,否则启动后台线程会让IIS在你不知情的情况下回收你的线程。最好不要在ASP.NET环境中使用这种类型的线程(不要说“永远”,但要正确使用它可能很困难)

BackgroundWorker
与ASP.NET的配合不太好


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

如果必须使用线程,请使用ThreadPool.QueueWorkerItem(…)

如果必须使用线程,请使用ThreadPool.QueueWorkerItem(…)如果有人和我有同样的问题。。。这里有一个很好的解决方案,对我来说很有吸引力

这里有一个更有效的解决方案:


如果有人和我有同样的问题,

这两项测试都进行了测试。。。这里有一个很好的解决方案,对我来说很有吸引力

这里有一个更有效的解决方案:


两者都经过测试

那么,有没有办法在后台执行一段代码呢?我只需要一种在后台执行方法的方法…我敦促您找到另一种方法。除非你真的知道自己在做什么,否则你真的会把事情搞得一团糟。难道你不知道还有别的办法吗?还是一个建议?对不起,我在这件事上没有那么多经验……如果你打算征求专家的意见,那么你最好听听他们给你的建议。任何对ASP.NET足够陌生的人,如果他试图在ASP.NET应用程序中使用BackgroundWorker,那他就太新了,根本不会使用多个线程,更不用说在ASP.NET应用程序中了。如果你为我工作,我会告诉你在知道你在做什么之前不要使用多个线程。是的,但是如果你使用任何其他方法,你会以难以调试的方式把程序搞砸。初学者不应该使用多线程。我不会再为你操心了。放弃吧,忘掉它。如果你坚持的话,我相信你会在这里找到一个人,他会把装了子弹的枪交给你,让你用枪自杀。那个人不会是我。那么,有没有办法在后台执行一段代码呢?我只需要一种在后台执行方法的方法…我敦促您找到另一种方法。除非你真的知道自己在做什么,否则你真的会把事情搞得一团糟。难道你不知道还有别的办法吗?还是一个建议?对不起,我在这件事上没有那么多经验……如果你打算征求专家的意见,那么你最好听听他们给你的建议。任何对ASP.NET足够陌生的人,如果他试图在ASP.NET应用程序中使用BackgroundWorker,那他就太新了,根本不会使用多个线程,更不用说在ASP.NET应用程序中了。如果你为我工作,我会告诉你在知道你在做什么之前不要使用多个线程。是的,但是如果你使用任何其他方法,你会以难以调试的方式把程序搞砸。初学者不应该使用多线程。我不会再为你操心了。放弃吧,忘掉它。如果你坚持的话,我相信你会在这里找到一个人,他会把装了子弹的枪交给你,让你用枪自杀。那个人不会是我。哦,它可以与ASP.NET一起工作。“只是不像你期望的那样,也不是很有用。”亨克沃特曼:澄清了我的答案。为了防止一个编码受虐狂想把一个应用到生产中,它可以与ASP.NET一起工作。“只是不像你期望的那样,也不是很有用。”亨克沃特曼:澄清了我的答案。以防一个编码受虐狂想把它投入生产。