Witam
Napisałem program który między innymi robi wiele operacji w tle, wymyśliłem sobie że owe operacje będzie sygnalizowała odpalona w osobnym wątku formatka, bez żadnej ramki, jedynie animowany gif i informacja o rodzaju operacji. Póki testy robiłem na moim głównym kompie (c2d @1,86GHz) wyglądało na to że wszystko działa na tyle sprawnie że można to zaakceptować.
jednak gdy przystąpiłem do testów na starszym kompie (athlon 1.2 FSB266) okazało się że owa wspaniała wydajność jest między innymi zasługą dwóch rdzeni, wykonanie tych samych operacji na starszym kompie trwa wieki, i widać że wątek główny aplikacji, przeszkadza wątkowi z formatka informacyjna, gdyz gif ma spore trudności żeby być animowanym w sposób płynny
Licze na jakąs podpowiedź lub może link to jakiegoś art-a co traktował by o radzeniu sobie zproblemami tego typu
obecnie kod wygląda następująco, mam jeszcze z nim taki problem że czasami dostaje komunikat "thread is already aborted" i nie wiem jak to zachwycić żeby tego błędu nie było
public static bool alreadyBusy = false;
public static BusyIndicator bi = new BusyIndicator("");
public static Thread backgroundOpertionThread;
public static void showBusy(bool isBusy, System.Windows.Forms.Form hostform, string message)
{
Common.busyMessage = message;
if (isBusy)
{
Common.alreadyBusy = true;
backgroundOpertionThread = new Thread(new ThreadStart(showBusy));
Thread.Sleep(500);
if (hostform != null)
{
hostform.Enabled = false;
hostform.SuspendLayout();
}
backgroundOpertionThread.Start();
}
else
{
backgroundOpertionThread.Abort();
Thread.Sleep(500);
Common.alreadyBusy = false;
if (hostform != null)
{
hostform.Enabled = true;
hostform.ResumeLayout();
}
}
}
public static void showBusy()
{
BusyIndicator bir = new BusyIndicator(Common.busyMessage);
bir.ShowDialog();
}
pozdrawiam MTH