UTILIZANDO BACKGROUNDWORKER EM UM FOR

BOSCOSANTANNA 19/06/2015 10:32:53
#447849
Olá Pessoal

Tenho uma consulta a um webservice que coloquei a rotina no BackgroundWorker.
E esse camponente esta dentro de um FOR pois ele precisa puxa dados de filias deferentes.
mas esta dando o seguinte erro?

[Ô]An unhandled exception of type [ô]System.InvalidOperationException[ô] occurred in System.dll
Additional information: This BackgroundWorker is currently busy and cannot run multiple tasks concurrently.[Ô]

Tradução: Informações adicionais: Este BackgroundWorker está ocupado e não pode executar várias tarefas ao mesmo tempo [Ô].

Acredito que seja por que ele fez a primeira consulta e quando entra na segunda não vai.
Estou sem ideai para corrigi.

Rotina.
if (progressBar2.Value == progressBar2.Maximum)
{
DateTime hora = DateTime.Now;
if (horaA == hora.ToString([Ô]HH:mm[Ô]) | horaB == hora.ToString([Ô]HH:mm[Ô]) | horaC == hora.ToString([Ô]HH:mm[Ô]))
{
grid.Rows.Clear();
gresumo.Rows.Clear();

for (int i = 0; i < ls.Items.Count; i++)
{
tconexao = 1;
conexaoDN = Convert.ToInt32(ls.Items[i].Text); // 6063;
scode = ls.Items[i].SubItems[1].Text;
bwconsulta.RunWorkerAsync();
// tabControl1.SelectedTab = tabPage1;
//conectar6689();
}
}
else
{progressBar2.Value = 0;}
}
else{progressBar2.Value += 1;}

GUIMORAES 19/06/2015 10:47:48
#447850
A mensagem é clara, você está executando a mesma backgroundWork, sendo que a mesma já está ocupada.

Eu prefiro usar uma thread para fazer este tipo de processo, é melhor pois podemos controlar a mesma.
O correto seria instanciar uma nova backgroundWork a cada chamada, mais isto poderá consumir recurso, verifique qual é a melhor forma de fazer isto.
Tópico encerrado , respostas não são mais permitidas