ciao a tutti, ho una cosetta che non riesco a risolvere: ho creato un classico, semplicissimo waitdialog da mostrare all'utente mentre attende (caricamento, ricerca ecc). Dal momento che vorrei farlo animato però (ho messo una progressbar con maruqee style e un counter di millisecondi), sto provando a chiamarlo in un thread separato. Il dialog però appare sempre solo alla fine delle operazioni e non all'inizio, e per giunta è fermo. Posto di seguito un po' di codice:
PleaseWait workerObject = new PleaseWait();
Thread workerThread = new Thread(workerObject.DoWork);
workerThread.Start();
while (!workerThread.IsAlive);
Thread.Sleep(1);
sMDIChild.MdiParent = sMDIParent;
sMDIChild.Show();
sMDIChild.Activate();
sMDIChild.BringToFront();
workerObject.RequestStop();
workerThread.Join();
public class PleaseWait
{
public void DoWork()
{
WaitDialog.WaitForm oWait = null;
while (!_shouldStop)
{
oWait = new WaitDialog.WaitForm();
oWait.Show();
}
if (oWait != null)
oWait.KillMe();
}
public void RequestStop()
{
_shouldStop = true;
}
private volatile bool _shouldStop;
}
grazie dell'aiuto, come sempre
p.s.: non credo c'entri nulla, ma il waitdialog è compilato in una dll a parte
[EDIT]
ho fatto qualche prova anche con il backgroundworker, ma il risultato non cambia