U pocetku sam i ja mislio da je najbolje da postojece metode koje mogu da izazovu bokiranje programa stavim u posebnu nit, a to sam radio tako sto sam napravio recimo za metodu
Code:
public void btnStatistika(object sender, System.EventArgs e)
{
// kod koji radi nesto sa bazom, preko mreze ...
}
napravio metodu sa potpisom koji odgovara delegatu ThreadStart
Code:
public void btnStatistika()
{
// kod koji radi nesto sa bazom, preko mreze ...
// Posebna WinForma
pleaseWait.Hide();
}
public void btnStatistika(object sender,System.EventArgs e)
{
Thread workerThread = new Thread(new ThreadStart(btnStatistika));
workerThread.Start();
pleaseWait.Show();
}
I ovo resenje mi je delovalo sasvim ok, ali mi se tada u nekim metodama javljao Exception, da ne mogu da u drugoj niti koristim kontrole koje su napravljene u jednoj niti. Posto ovaj problem nisam mogao da resim morao sam da nadjem drugo resenje. Sada mi je resenje sledece :
Code:
public void btnStatistika(object sender,System.EventArgs e)
{
Thread workerThread = new Thread(new ThreadStart(ShowPleaseWait));
workerThread.Start();
// kod koji radi nesto sa bazom, preko mreze ...
pleaseWait.Close();
}
public void ShowPleaseWait()
{
pleaseWait.ShowDialog();
}
Nista bolje za sad ne mogu da smislim, ali i dalje mislim da mi je prvo resenje bolje ali mi ostaje taj problem tj. Exception.
U principu me zanima da li je ovo drugo resenje da kazem optimalno, zbog stalnog koriscenja niti ? Ali opet bez koriscenja niti ja ne vidim kako bi moglo ovo sto ja
hocu da se odradi.
Poz.