20. september 2003 - 16:59Der 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
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...
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.
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
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.
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 ?
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.
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).
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
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...
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)
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?
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...
'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
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)
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...
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)
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...
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
Synes godt om
Ny brugerNybegynder
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.