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 № 1BackgroundWorker
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