Napisałem HttpModule, który spawns wątek tła. Używam wątku jak Zaplanowane zadanie, które działa w toku, co jest naprawdę przydatne.Jakie są najlepsze praktyki dotyczące zarządzania wątkami tła w usługach IIS?
Jakie są najlepsze praktyki dotyczące śledzenia tego wątku? Nigdy wcześniej tego nie robiłem i jestem nieco zdezorientowany niektórymi aspektami:
Skąd mam wiedzieć, czy wątek nadal działa? Widzę, że wykonuje swoją pracę, ale czy istnieje inny sposób, aby wiedzieć, czy wciąż żyje? Pobrałem ProcMon, ale w3wp.exe spawns boatload z wątków, więc nie miałem pojęcia, który był mój wątek. Nazwałem to, ale to nie pomogło.
Jak "złapać" nitkę, jeśli umrze? Czy istnieje jakaś metoda Dispose, w której mogę ją zapisać do EventLog lub coś, jeśli się nie uda? "Deklaracja śmierci" czy coś takiego?
Jak aktywnie zatrzymać wątek? Jeśli chcę, aby przestał on działać w tle, w jaki sposób mogę go zabić bez konieczności odrzucania usług IIS?
Czy mimo to można go uruchomić ponownie, niezależnie od modułu HttpModule? (Zgaduję, że odpowiedź na to jest nie ...)
Edit: Właśnie w celu wyjaśnienia, intencją jest to, że mój wątek nigdy nie odchodzi. Uruchamia funkcję, po czym przechodzi w stan uśpienia na kilka minut, a następnie budzi się i ponownie uruchamia funkcję. To nie jest tak, że wykonuje jedno zadanie, a potem kończy.
Czy otrzymujesz błąd system.timeout? – TStamper
lekceważenie. to nie powinno się do tego odnosić – TStamper