/ / BackGroundWorker não executando em segundo plano - c #, asp.net, .net

BackGroundWorker não está sendo executado em segundo plano - c #, asp.net, .net

Quando carrego minha página, só consigo navegar depois que o processo de trabalho em segundo plano é feito ... deve ser executado em segundo plano, como o nome diz?

aqui está o código:

    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 ===================");
}

Respostas:

6 para resposta № 1

BackgroundWorker não funciona muito bem com o ASP.NET.

Além disso, a menos que você goste de brincar comfogo, lançando threads de plano de fundo deixa a possibilidade aberta que o IIS pode reciclar seu segmento sem você saber. É melhor não usar esse tipo de threading em um ambiente ASP.NET (não dizendo sempre, mas pode ser complicado ficar correto)


2 para resposta № 2

BackgroundWorker é apenas para o Windows Forms, não para o ASP.NET.

Você é muito melhor não usar quaisquer threads de segundo plano no ASP.NET, a menos que você seja um especialista em multithreading.


2 para resposta № 3

o BackgroundWorker é projetado apenas para trabalhar usando WindowsForms.

Se você quiser simular a mesma funcionalidade, use um Thread em vez disso, mas tenha cuidado ao usar threads no ASP.NET, certifique-se de que o que você está fazendo não afeta a comunicação entre cliente e servidor.


2 para resposta № 4

e no caso de você precisar usar o encadeamento, use o ThreadPool.QueueWorkerItem (...)


0 para a resposta № 5

Se alguém tiver o mesmo problema que eu ... Aqui está uma boa solução que funcionou como um encanto para mim.

http://www.codeproject.com/KB/cs/AsyncMethodInvocation.aspx

E aqui está uma solução que funcionou ainda melhor:

http://weblogs.asp.net/albertpascual/archive/2009/05/14/fire-and-forget-class-for-asp-net.aspx

Ambos testados