Avatar billede dingemann Novice
20. september 2003 - 16:59 Der er 25 kommentarer og
2 løsninger

Windows Services-programmering

Jeg skal ha lavet en services til min server som køre selvom ingen er logget på den - man kan vel kalde det en vedligeholdeses-services i retningen af fx at slette alle *.tis-filer fra roden hvert 30 minut...

Er nået så langt til at ha startet et nyt Windows Services-projekt :D men så når jeg ikke længere - dels fordi jeg ikke kender så meget til programmering af sådanne services men også mangler lidt viden om hvordan de compiles...

Derfor:

1. Hvis der er nogen der gider skrive den overordnede syntax - eller syntax er det vel ikke men reglsæt - fx hvad må jeg og hvad må jeg ikke i forhold til VB.NET

2. Hvordan foregår compileringen og hvordan udføres efterbehandlingen (installationen på min server)

3. Og hvis der er nogen der kort kunne komme med fx overstående eksempel - med at slette *.tis-filer fra roden hvert 30 minut, i kildekode bare så jeg kunne se hvordan man starter (så kan jeg altid selv udbygge det)

Med venlig hilsen fra Peter der lægger vægt på svar til punkt 3
Avatar billede odegaard Nybegynder
20. september 2003 - 17:20 #1
Var det ikke nemere bare at lave en bat-fil der gør det, og så køre den med schedulemanageren som allerede er indbygget?
Avatar billede dingemann Novice
20. september 2003 - 17:22 #2
nix... som services tak...
Avatar billede odegaard Nybegynder
20. september 2003 - 17:25 #3
Bruger du Visual Studio.NET ? Her kan du, når du oprettet et projekt, vælge at lave en windows service.
Avatar billede dingemann Novice
20. september 2003 - 17:30 #4
jeg bliver nødt til at bede dig om at læse mit indlæg bedre igennem for det har du tydeligtvis ikke gjort.

Det project jeg kom med var et eksempel (jeg tror jeg brugte 'fx' - ydereligere tror jeg godt selv jeg kunne ha fundet på det med batch-filen men der er jo lissom en grund hertil) - det rigtige projekt er et projekt der skal downloade en fil og ekskvetere den, yderligere _har_ jeg gjort opmærksom på at jeg har fået startet et nyt service-projekt og ja! jeg har oprettet spørgsmålet i den her gruppe med overskriften Visual BASIC.NET fordi jeg sjovt nok arbejder med Visual BASIC.NET... *sigh*
Tre svar som alle stod i rod-spørgsmålet...
Avatar billede sys64738 Nybegynder
20. september 2003 - 17:35 #5
Avatar billede dingemann Novice
20. september 2003 - 17:38 #6
hey tak... jeg læser det lige igennem og så acceptere jeg muligvis men det lader til at du har fundet noget guf :D takker og tilbeder dybt
Avatar billede odegaard Nybegynder
20. september 2003 - 17:42 #7
Ja ja rolig nu. Jeg forsøger bare at hjælpe. At du bruger Visual Basic.NET siger jo intet om, om du bruger Visual Studio.NET.
Og nej jeg nærlæste ikke dit spørgsmål.
Avatar billede dingemann Novice
20. september 2003 - 23:12 #8
sys64738 <---- du får pointe hvis du kan fortælle mig hvordan jeg opretter en timer når jeg nu ikke har mulighed for at orpette den pga manglende tabs ude i siden (Timer-funktionen er ikke tilgængelig :D) - hvis du ikke hjælper får du dem nok alligevel hehe
Avatar billede sys64738 Nybegynder
22. september 2003 - 10:32 #9
Jeg går udfra at du vil lave en timer uden controllen...?
Jeg har lige en snip fra VB, men det burde let kunne konverteres til vb.net
:-)

Public Declare Function SetTimer Lib "user32.dll" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Public Declare Function KillTimer Lib "user32.dll" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long

Public Sub TimerProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal idEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long)
  On Error Resume Next
 
  'Put your code to be executed if the interval is hit.
 
End Sub

Then in Your Form_Load Event, try:

retval = SetTimer(Me.hwnd, 1, 5000, AddressOf TimerProc)

and in Form_Unload event:

KillTimer Me.hwnd, 0
Avatar billede odegaard Nybegynder
22. september 2003 - 13:02 #10
Øhm hvorfor instantierer du ikke bare en System.Threading.Timer, som er en del af .NET frameworket?
Ex.
http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemthreadingtimerclasstopic.asp
Avatar billede dingemann Novice
22. september 2003 - 15:21 #11
jeg er meget hooked på odegaards metode og jeg vil da gerne betale yderligere 60 point hvis det bare var sådan at jeg kunne få den til at virke og sys-et-eller-andet du skal nok få dine 60 point men venter lige odegaard har guidet mig igennem hans forslag som jeg after at bruge... jeg kan se at formålet er at der kommer noget i Imidiatoren hvilket ikke sker :D why ?
Avatar billede odegaard Nybegynder
22. september 2003 - 15:54 #12
Tja jeg ved ikke rigtigt hvordan jeg skal guide dig. Det link jeg gav dig, viser et kodeeksempel på hvordan du gør. I bund og grund handler det blot om at oprette en timer, en callback-funktion (delegate) som timeren skal kalde, og så en reference imellem disse to.
Avatar billede dingemann Novice
22. september 2003 - 15:56 #13
du kunne jo lave et services-eksempel der genere en tekstbox hver 5 sekundt :D så smider jeg 10 point oven i hatten til jer begge :D hehe
Avatar billede odegaard Nybegynder
22. september 2003 - 15:57 #14
Jeg bryder mig dog ikke meget om delen
While Not (s.tmr Is Nothing)
    Thread.Sleep(0)
End While

Det vil sluge for mange resourcer med så kort en sleep-tid i løkken (når en tråd sover, vil CPU'en få mulighed for at processere andre tasks i mellemtiden, såsom din delegate).
Avatar billede dingemann Novice
22. september 2003 - 16:00 #15
jeg må da indrømme at jeg ikke har kigget kildekoden nærmere igennem - har copy/pasted den ind de respektive steder uden at nærlæse den men du har da ret i at den While-del har aldrig været god - kender godt lign. fra andre steder... men som sagt hvis du vil lave et eksempel der duer med en timer og en tekstbox hvert 5 sekundt så ville jeg blive glad :D
Avatar billede odegaard Nybegynder
22. september 2003 - 16:05 #16
Næ gider ikke :-)
Du skal jo også lære noget hehehe
Prøv nu bare at læse lidt om Timeren i SDK'en. Det er faktisk ikke særlig svært.
Rart at høre at jeg ikke er den eneste der ikke nærlæser...
Avatar billede dingemann Novice
22. september 2003 - 16:10 #17
aaah comon - jeg lære bedst ved at se eksempler der virker - sådan har jeg startet med at lære VB, Illustrator, Flash Action Script, 3DS MAX osv... det første jeg gør når jeg får en manual i hånden er at arkivere den lodret og finde samples-biblioteket eller køre tutorialsne igennem forfra og bagfra... når det så er gjort så kan jeg starte med at bygge op fra bunden men så længe jeg ikke kender programmet helt ender det altid i hat og briller og det er muligvis derfor jeg ikke kan hitte ud af det (igen)
Avatar billede odegaard Nybegynder
22. september 2003 - 16:18 #18
Sådan gjorde jeg også indtil jeg lærte at bruge SDK'en. Tro mig! Det er et uvurderligt værktøj (og her er jo også et brugbart fungerende eksempel). Faktum er at man ikke kommer ret langt, hvis man ikke kan bruge de teoretiske værktøjer.
Hvad er egentlig forskellen på at jeg kommer med et eksempel, fremfor at SDK'en kommer med et eksempel?
Avatar billede dingemann Novice
22. september 2003 - 16:20 #19
jeg kan da også godt bruge MSDN'en som jeg har på computeren og i VB6 Enterprise var den et ganske simpelt uundværlig... men i det her tilfælde virker eksemplet som du linkede til ikke så derfor får jeg ikke nogen aha-oplevelse og kan derfor ikke lære noget - jeg ved godt MSDN'en er super og bruger den også ekstremt meget men så længe det ikke virker så mangler der lissom noget...
Avatar billede sys64738 Nybegynder
22. september 2003 - 20:08 #20
'This assumes that this form has two Buttons
'called btnStart and btnStop as well as a
'Label called Label1

Public Class Form1

    Inherits System.Windows.Forms.Form

    Private t As New System.Timers.Timer(5000)

    Private Sub Form1_Load(ByVal sender As Object, _
          ByVal e As System.EventArgs) Handles MyBase.Load
       
        AddHandler t.Elapsed, AddressOf TimerFired
    End Sub

    Private Sub btnStart_Click(ByVal sender As System.Object, _
          ByVal e As System.EventArgs) Handles btnStart.Click
         
        t.Enabled = True
    End Sub

    Private Sub btnStop_Click(ByVal sender As System.Object, _
          ByVal e As System.EventArgs) Handles btnStop.Click
         
        t.Enabled = False
    End Sub

    Public Sub TimerFired(ByVal sender As Object, _
          ByVal e As System.Timers.ElapsedEventArgs)
         
        Label1.Text = "Signal Time = " & e.SignalTime.ToString
    End Sub

End Class

'Now run the form and click on the Start Button. The timer will start and the label will update every 5 seconds with the Signal Time. You can stop to Timer by pressing the Stop button
Avatar billede dingemann Novice
22. september 2003 - 20:36 #21
Inherits System.Windows.Forms.Form <--- jeg kan ikke inherirette den da Forms ikke er tilgængelig uden GUI og en Services har ingen GUI - har prøvet før du kom med forslaget (det er der mit grundlæggende problem ligger)
Avatar billede sys64738 Nybegynder
22. september 2003 - 22:25 #22
Af ren nysgerighed! - Hvorfor i alverden skal en "service" bruge en messagebox og ikke log ?
Avatar billede dingemann Novice
22. september 2003 - 22:41 #23
det var et eksempel... essensen er at den skal udføre noget hver halve time uden en msgbox - det var bare så jeg kunne aflæse om den nu også gjorde det og det gjorde den ikke når jeg brugte exemplet som der er linket til på SDK...
Avatar billede odegaard Nybegynder
23. september 2003 - 20:31 #24
Dingemann: Det var netop derfor at du ikke skulle bruge System.Threading.Timer :-)
Forms-timeren er noget nemmere at bruge, men kan netop ikke bruges til formålet (og det kan msgbox'en vist heller ikke)
Avatar billede dingemann Novice
23. september 2003 - 20:44 #25
ja det må det jo være men jeg fik ikke eksemplet til at skrive noget i imidiatorvinduet så det giver lissom sig selv...

Men det er jo hvad det er - derfor ville jeg også gerne låne et funktionelt eksempel - men ved du hvad ? jeg gider ikke mere - finder en anden løsning - eller det passer jo ikke men jeg lader problemet i ro og prøver senere...

smid et svar for du fortjener også point så...
Avatar billede odegaard Nybegynder
23. september 2003 - 23:23 #26
Avatar billede dingemann Novice
05. november 2003 - 15:45 #27
selvom ingen af Jer fortjener point deler i i porten for jeg gider ikke diskutere det hvis jeg selv snupper pointene - konklussionen er at jeg ikke blev en døjt klogere af Jeres indlæg men har fundet en anden løsning... *suk* hurra

Og til dig Odegaard - dit link referere til et C# eksempel - allerede i starten af dette spørgsmål sagde jeg udtrykkeligt til dig at du burde læse mit dokument igennem en gang til... men ingen fremgang er at spore
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester