Forum » Programiranje » C# in servisi
C# in servisi
MarCar ::
Imam en problem.
Namreč v C# imam napisan service kateri mi kopira iz lokalnega racunalnika datoteke na nek drugi omrezni racunalnik.
Ko testiram, testiram na interval 60 sekund, ok, vse deluje super, dokler ne testiram kaj se zgodi če pride do izpada omrežne povezave.
Service preneha delovati.
Na nastavitvah sem nastavil, da se po napaki resetira, in ok, service deluje, ampak ko priključim računalnik nazaj na omrežje še vedno noče pošiljat.
Lahko kdo kaj pomaga z kakim nasvetom?
Namreč v C# imam napisan service kateri mi kopira iz lokalnega racunalnika datoteke na nek drugi omrezni racunalnik.
Ko testiram, testiram na interval 60 sekund, ok, vse deluje super, dokler ne testiram kaj se zgodi če pride do izpada omrežne povezave.
Service preneha delovati.
Na nastavitvah sem nastavil, da se po napaki resetira, in ok, service deluje, ampak ko priključim računalnik nazaj na omrežje še vedno noče pošiljat.
Lahko kdo kaj pomaga z kakim nasvetom?
MarCar ::
Lovim izjemo.
Ugotovil sem, da ko recimo priklopim lokalni racunalnik nazaj na omrežje, da se ne izvaja normalno, ampak, kot da ne more narediti konekcije na omrezni vir, racunalnik.
To sem ugotovil tako, da sem na koncu programcka naredil try catch in mi izpise log.
Kodo dodam pozneje, ker sem trenutno na drugi lokaciji.
Kot vem lih Service samega sebe ne more resetirati, mogoče bi samo znova moral narediti povezavo.
Ugotovil sem, da ko recimo priklopim lokalni racunalnik nazaj na omrežje, da se ne izvaja normalno, ampak, kot da ne more narediti konekcije na omrezni vir, racunalnik.
To sem ugotovil tako, da sem na koncu programcka naredil try catch in mi izpise log.
Kodo dodam pozneje, ker sem trenutno na drugi lokaciji.
Kot vem lih Service samega sebe ne more resetirati, mogoče bi samo znova moral narediti povezavo.
fx ::
V C# sem napisal service, kateri mi zažene programček("CAN")ob zagonu.
Napisal sem še si program, kateri mi pregleduje in prikazuje status servica za CAN, MySQL in Apache2.2.
V tem programu lahko tudi ustavim ali poženem enega od omenjenih servisov ročno. Ampak ko želim ustaviti ali zagnati CAN pa me komande ne ubogajo, čeprav za MySQL in Apache pa deluje. CAN service lahko ustavim in ponovno poženem lahko samo preko start->run->services.
v servicu za CAN sem dodal ProjectInstaller. tako da potem samo v inno setup vpišem
Tukaj pa še kode:
Napisal sem še si program, kateri mi pregleduje in prikazuje status servica za CAN, MySQL in Apache2.2.
V tem programu lahko tudi ustavim ali poženem enega od omenjenih servisov ročno. Ampak ko želim ustaviti ali zagnati CAN pa me komande ne ubogajo, čeprav za MySQL in Apache pa deluje. CAN service lahko ustavim in ponovno poženem lahko samo preko start->run->services.
v servicu za CAN sem dodal ProjectInstaller. tako da potem samo v inno setup vpišem
Filename: "{app}\{#GSSServerPath}\gssserver.exe"; Parameters: "--i"; Flags: runascurrentuser shellexec waituntilterminated runhidden;
Tukaj pa še kode:
[RunInstaller(true)] public class ProjectInstaller : Installer { private ServiceProcessInstaller serviceProcessInstaller; private ServiceInstaller serviceInstaller; public ProjectInstaller() { serviceProcessInstaller = new ServiceProcessInstaller(); serviceInstaller = new ServiceInstaller(); // Here you can set properties on serviceProcessInstaller or register event handlers serviceProcessInstaller.Account = ServiceAccount.LocalSystem; serviceProcessInstaller.Password = null; serviceProcessInstaller.Username = null; serviceInstaller.ServiceName = fxCAN.MyServiceName; serviceInstaller.DisplayName = fxCAN.MyServiceName; serviceInstaller.StartType = ServiceStartMode.Automatic; this.Installers.AddRange(new Installer[] { serviceProcessInstaller, serviceInstaller }); } } static void Main(string[] args) { if (System.Environment.UserInteractive) { string parameter = string.Concat(args); switch (parameter) { case "--i": case "--install": ManagedInstallerClass.InstallHelper(new string[] { Assembly.GetExecutingAssembly().Location }); break; case "--u": case "--uninstall": ManagedInstallerClass.InstallHelper(new string[] { "/u", Assembly.GetExecutingAssembly().Location }); break; } } else { // To run more than one service you have to add them here ServiceBase.Run(new ServiceBase[] { new fxCAN() }); } } public class fxCAN : ServiceBase { public const string MyServiceName = "fxCAN"; private ServiceController service; public fxCAN() { InitializeComponent(); } private void InitializeComponent() { this.ServiceName = MyServiceName; this.CanStop = true; this.CanHandlePowerEvent = true; this.CanHandleSessionChangeEvent = true; this.CanPauseAndContinue = true; this.CanShutdown = true; } /// <summary> /// Clean up any resources being used. /// </summary> protected override void Dispose(bool disposing) { base.Dispose(disposing); } /// <summary> /// Start this service. /// </summary> protected override void OnStart(string[] args) { ProcessStartInfo bat = new ProcessStartInfo(); bat.UseShellExecute = true; bat.WorkingDirectory = @"C:\"; bat.FileName = "start_fxcan.bat"; Process p = Process.Start(bat); } /// <summary> /// Stop this service. /// </summary> protected override void OnStop() { ProcessStartInfo bat = new ProcessStartInfo(); bat.UseShellExecute = true; bat.WorkingDirectory = @"C:\"; bat.FileName = "stop_fxcan.bat"; Process p = Process.Start(bat); } }
Lep pozdrav,
fx
fx
Zgodovina sprememb…
- spremenil: fx ()
mihies ::
Morda neumno vprašanje, ampak zakaj sploh potrebuješ servis? Daj zagon v Task Scheduler, pa bo.
Drugače pa, če že nimaš nekega sledenja (logging), lahko pogledaš v Event Viewer, če se je tam kakšna izjema ujela.
Drugače pa, če že nimaš nekega sledenja (logging), lahko pogledaš v Event Viewer, če se je tam kakšna izjema ujela.
http://blog.rthand.com/
SLODUG - uporabniška skupina
https://www.facebook.com/groups/slodug/
SLODUG - uporabniška skupina
https://www.facebook.com/groups/slodug/
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Program za set back time (RUN AS DATE)Oddelek: Programska oprema | 4866 (4490) | Yacked2 |
» | c# tiho tiskanje slik.Oddelek: Programiranje | 1947 (1618) | OmegaM |
» | Windows 7 Installer (64-bit) - težaveOddelek: Programska oprema | 2993 (2383) | fr!Xy |
» | ASP.NET pisanje datotekeOddelek: Programiranje | 1118 (996) | King80 |
» | Windows Installer problemOddelek: Pomoč in nasveti | 2146 (2073) | Myth |