Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Amansızca duran Windows hizmeti
#1
MErhaba,
Bir Windows hizmetim var. uzun zamandır müşterilerimizde çalışıyor.

Ama bana bugün ulaşan bir müşterimin bilgisayarınd ben başlatıyorum o duruyor kaç saattir takıldım kaldım.

Log attım her yere ama hata belirtisi bulamadım. Böyle bir durum başınıza geldi mi ?
Windowsun olay geçmişine bakıyorum oraya da bir hata logu düşmemiş.

procedure ServiceExecute(Sender: TService);
begin
 try
   while not Terminated do
     begin
       ServiceThread.ProcessRequests(True);
     end;
   Tmr.Enabled := False;
 except on E: Exception do eLog('Exception: ' +e.Message);
 end;
end;

procedure ServiceStop(Sender: TService;
  var Stopped: Boolean);
begin
eLog('Servis ServiceStop : '+ Inttostr(Sender.ErrCode));
end;
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#2
Öncelikle ServiceExecute'un çalışıp çalışmadığına emin olmak için ServiceExecute'un başlangıcına log koyabilirsiniz. Çünkü problem ServiceStart'ta olabilir ve dolayısıyla ServiceExecute hiç çalışmıyor olabilir.
There's no place like 127.0.0.1
WWW
Cevapla
#3
(20-11-2017, Saat: 15:46)SimaWB Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlÖncelikle ServiceExecute'un çalışıp çalışmadığına emin olmak için ServiceExecute'un başlangıcına log koyabilirsiniz. Çünkü problem ServiceStart'ta olabilir ve dolayısıyla ServiceExecute hiç çalışmıyor olabilir.


procedure ServiceExecute(Sender: TService);
begin
try
  while not Terminated do
    begin
      ////-------------   Buraya kada geliyor loglarım kaydoluyor   
      ServiceThread.ProcessRequests(True);
      ////-------------   Ama Buraya gelmiyor
    end;
  Tmr.Enabled := False;
except on E: Exception do eLog('Exception: ' +e.Message);
end;
end;
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#4
Zaten ProcessRequests fonksiyonu True parametresi ile kullanılınca bir alt satıra geçmemesi gerekir. True parametresi kullanılırsa; ProcessRequests, servis Terminate edilinceye kadar bekler
There's no place like 127.0.0.1
WWW
Cevapla
#5
Servis'in OnExecute olay yöneticisinde ekstra bir kod göremedim. Acaba ilgili olay yöneticisini kullanmak istemenin göremediğim bir nedeni var mı güzel kardeşim ? İlgili olay yöneticisine kod yazmaz isen zaten TServiceThread.Execute metodunda, ProcessRequests true ile çağrılıyor Wink
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#6
(20-11-2017, Saat: 17:54)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlServis'in OnExecute olay yöneticisinde ekstra bir kod göremedim. Acaba ilgili olay yöneticisini kullanmak istemenin göremediğim bir nedeni var mı güzel kardeşim ? İlgili olay yöneticisine kod yazmaz isen zaten TServiceThread.Execute metodunda, ProcessRequests true ile çağrılıyor Wink

Timer'im var abi 30 saniyede bir eğer bekleyen iş var ise üzerine alıp çalışıp bitiriyorum. Timer'ım hiç durmuyor.

Alıntı:servis Terminate edilinceye kadar bekler
Servisi de Terminate etmiyorum, Servisimde Timer'ım hiç durmuyor. Normalde.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#7
Codesite ile bir loglamayı dene bakalım nerede patlıyor ?
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#8
Ayrıca timer uygun bir component olmayabilir sevis uygulaması için. Timer'ın bir pencereye ihtiyacı olur. Onun yerine Api kullan ya da bir thread kullan bakalım ne olacak ?
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#9
(20-11-2017, Saat: 19:53)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlCodesite ile bir loglamayı dene bakalım nerede patlıyor ?

Abi bilmiyorum desem Sad

(20-11-2017, Saat: 19:55)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlAyrıca timer uygun bir component olmayabilir sevis uygulaması için. Timer'ın bir pencereye ihtiyacı olur. Onun yerine Api kullan ya da bir thread kullan bakalım ne olacak ?

Abi bugün biraz uğraştım thread işine, java tarafında çok sık kullanıyorum bu tarafta o kadar iyi bilmiyorum.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#10
Hocam servisi eklerken cmd'de  -sc create ornekservice1 binpath= "c:\ornekservice\ornekservice.exe ornekservice1"- şeklinde ekleyip,serviste de
ismi (name)'i de aşağıdaki şekilde ayarlayarak bir dener misiniz?
procedure Service.ServiceCreate(Sender: TObject);
begin
if (System.ParamCount >= 1)  then
  Name := ParamStr(1);
end;
Bizi Toprağa Gömdüler Fakat Tohum Olduğumuzu Bilmiyorlardı.
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Windows Hizmetinde Hafıza Yönetimi yhackup 1 115 11-12-2017, Saat: 09:59
Son Yorum: SimaWB
  Windows Servislerini Kontrol Etmek tgural 4 315 09-10-2017, Saat: 13:21
Son Yorum: SimaWB
  Windows api index hzılı dosya arama veya MFT Master File Table Dosya Arama carsoft 3 394 08-07-2017, Saat: 10:09
Son Yorum: carsoft
  windows powershell pipe uzaktan yönetim masteryoda 2 387 10-05-2017, Saat: 17:21
Son Yorum: masteryoda
  Windows Hizmeti yhackup 4 1.598 06-10-2016, Saat: 20:46
Son Yorum: yhackup



Konuyu Okuyanlar: 1 Ziyaretçi