{
thread = gcnew Thread(gcnew ParameterizedThreadStart(this, &MailBox::Login_T));
thread->Start(login + "&" + password);
//tu wstrzymujemy do czasu wykonania
delete thread;
return result_login;
};
System::Void MailBox::Login_T(System::Object^ obj)
{
// coś co ustawia result_login na odpowiednią wartość.
};
Problem wynikł z tego, że odpalenie wątku (thread->Start) powoduje wykonanie funkcji Login_T, która - jak wiadomo - wykona się na osobnym wątku, nie przeszkadzając programowi. Jednak żeby wyrzucić dane ("return result_login") kod musi poczekać na wykonanie się wątku. Problem jest z samym wstrzymaniem. nie mogę tego wstrzymać w żadne sposób w stylu while(1), bo straci to sens. Chciałem użyć eventów (konkretnie delegate) by po zakończeniu wątku automatycznie wywoływał to zdarzenie, a do tego zdarzenia podpiąć dalszą część funkcji (czyli trzeba by ponownie rozdzielić funkcję). To bardziej konsultacja niż problem. Jest jakiś inny, lepszy, prostszy sposób, czy to o czym mówię, jest dobrym rozwiązaniem ?
P.S. swoją drogą to trochę dziwne, bo jak zauważycie dałem zaraz po Start - delete thread. Wydawało mi się, że przerwie wykonywani, czy wyrzuci błąd, a mimo to kontynuował i wywołał wszystkie funkcje.






