Dzien dobry,
Mam problem z wykryciem zakonczenia watku ThreadPool. Jak uzyje Wait(), to watek mi sie zawiesza.
Ponizej kod:
public void PingServer()
{
_LogMsg(_ExtDiag, "start");
var t = Task.Run((Action)(() =>
{
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(_URI);
WebResponse response = request.GetResponse();
_LogMsg(_ExtDiag, "Web Service status: " + ((HttpWebResponse)response).StatusDescription);
_SetConnection(true);
response.Close();
}
catch (Exception ex)
{
_LogMsg(_ExtDiag, "Web Service status: Service not avalaible " + ex.Message);
_SetConnection(false);
}
finally { _LogMsg(_ExtDiag, "End try/catch/finally"); }
}));
t.Wait();
_LogMsg(_ExtDiag, "End ");
}
Jak wywale t.Wait() wszystko chyba dziala poprawnie (chyba, bo nie jestem pewien czy watek sie konczy). w logu (_LogMsg) dostaje nastepujece komunikaty:
3/7/2019 803 AM:323 | WEB : start
3/7/2019 803 AM:323 | WEB : End
3/7/2019 804 AM:118 | WEB : Web Service status: OK
3/7/2019 804 AM:134 | WEB : End try/catch/finally
Jak t.Wait() istnieje, watek I program sie wiesza, w logu jest tylko "start" ;(
3/7/2019 812 AM:612 | WEB : start
Problem odkrylem przez przypadek, poniewaz chcialem wywolac
NotifyPropertyChanged("Connected");
po zakonczeniu watku, ale o tym moze pozniej w osobnym watku