07-12-2017, Saat: 18:05
(Son Düzenleme: 07-12-2017, Saat: 18:09, Düzenleyen: Tuğrul HELVACI.)
Mevcut VCL uygulamamın içerisine bir web server eklemem gerekti ve bunu TIdHTTPWebBrokerBridge vasıtası ile gerçekleştirdim. Öncelikle bir uyarıda bulunayım ardından da bir soru sorayım.
TWebDispatcher içinde tanımladığınız Action'ların OnAction olayında yazmış olduğunuz kodlar main thread'in context'in de değil, başka bir thread context'inde çalışır.(Beklendiği gibi, neticede bu bir Web Server). Dolayısı ile ana thread'in kontrol ettiği görsel bileşenlere ya da ortak kullanımda olan nesnelere erişir iken dikkatli olun.
Şimdi gelelim soruma:
İlgili Action'ın OnAction olayına yazdığım kodlar çalışır iken (varsayalım 100 saniye sürecek), kullanıcı uygulamadan çıkmak ister ise; bu durumda Web Server'ı stop ediyorum (Active := false). Ancak, hâla içeride çalışan bir thread olduğu için, Web Server bu çalışan thread'in sonlanmasını bekler durumda oluyor. İlgili thread'leri TerminateThread ya da ona benzer prematüre yöntemler ile sonlandırmak istemiyorum, ancak uzun süre beklemek de istemiyorum. İlgili nesnenin (TIdHTTPWebBrokerBridge) TerminateWaitTime property'sinin varsayılan değeri 5000, ben bu değeri Server'ı stoplamadan önce 1000 değeri ile değiştiriyorum ama etkisini göremedim.
Indy kodlarının içinde kaybolmadan önce, bu konu ile uğraşmış olan bir arkadaşım var mı diye sormak istedim sizlere. Maalesef ilgili sınıfın dökümantasyonu da yok.
Kısaca niyetim, Server'ı hızlıca Shutdown etmek.
TWebDispatcher içinde tanımladığınız Action'ların OnAction olayında yazmış olduğunuz kodlar main thread'in context'in de değil, başka bir thread context'inde çalışır.(Beklendiği gibi, neticede bu bir Web Server). Dolayısı ile ana thread'in kontrol ettiği görsel bileşenlere ya da ortak kullanımda olan nesnelere erişir iken dikkatli olun.
Şimdi gelelim soruma:
İlgili Action'ın OnAction olayına yazdığım kodlar çalışır iken (varsayalım 100 saniye sürecek), kullanıcı uygulamadan çıkmak ister ise; bu durumda Web Server'ı stop ediyorum (Active := false). Ancak, hâla içeride çalışan bir thread olduğu için, Web Server bu çalışan thread'in sonlanmasını bekler durumda oluyor. İlgili thread'leri TerminateThread ya da ona benzer prematüre yöntemler ile sonlandırmak istemiyorum, ancak uzun süre beklemek de istemiyorum. İlgili nesnenin (TIdHTTPWebBrokerBridge) TerminateWaitTime property'sinin varsayılan değeri 5000, ben bu değeri Server'ı stoplamadan önce 1000 değeri ile değiştiriyorum ama etkisini göremedim.
Indy kodlarının içinde kaybolmadan önce, bu konu ile uğraşmış olan bir arkadaşım var mı diye sormak istedim sizlere. Maalesef ilgili sınıfın dökümantasyonu da yok.
Kısaca niyetim, Server'ı hızlıca Shutdown etmek.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...