Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Windows service

Îåêßíçóå áðü ôï ìÝëïò DaltonGR. Τελευταία δημοσίευση από το μέλος RedHat στις 16-05-2008, 02:06. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  15-05-2008, 12:31 42011

    Windows service

    Καλημέρα,

    Θέλω να φτιάξω ένα windows service το οποίο θα κάνει κάποιον έλεγχο σε μία βάση δεδομένων κάθε λεπτό, χρησιμοποιώ timer για αυτό, και θα κάνει update σε κάποιες εγγραφές. Χρησιμοποιώ τον παρακάτω κώδικα, κάτι απλο για αρχή, αλλα απο ότι φαίνετε δεν εκτελεί τον κώδικα που βρίσκετε στο tick event του timer.
    χρησιμοποιώ VS 2005 και VB.net.

    Dim myLog As EventLog = New EventLog()
    Protected Overrides Sub OnStart(ByVal args() As String)
    myLog.Source = "WinService"
    myLog.WriteEntry("Service started" & Now.ToShortTimeString)
    Timer.Enabled =
    True
    NotifyWindowsService.Visible = True
    End Sub
    Protected Overrides Sub OnStop()
    ' Add code here to perform any tear-down necessary to stop your service.
    Timer.Enabled = False
    myLog.Source = "WinService"
    myLog.WriteEntry("Service stopped" & Now.ToShortTimeString)
    NotifyWindowsService.Visible =
    False
    End Sub
    Private Sub Timer_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer.Tick
    myLog.Source =
    "WinService"
    myLog.WriteEntry("Tick" & Now.ToShortTimeString)
    NotifyWindowsService.Visible =
    False
    End Sub

    Ευχαριστώ εκ των προτέρων.

  •  15-05-2008, 13:39 42015 σε απάντηση της 42011

    Απ: Windows service

    Αν ρίξεις μία ματιά στο documentation της Timer θα δεις ότι "This timer is optimized for use in Windows Forms applications and must be used in a window". Η κλάση System.Windows.Forms.Timer δεν είναι πραγματικός timer αλλά πιάνει ένα Windows Message το οποίο στέλνουν περιοδικά τα Windows στο παράθυρο της εφαρμογής. Το service δεν έχει παράθυρο, οπότε η Timer δεν δουλεύει.

    Αντί γι αυτό τον Timer μπορείς να χρησιμοποιήσεις το System.Timers.Timer component. Δες το How to: Create Instances of Server-Based Timers  για ένα παράδειγμα βήμα προς βήμα


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  15-05-2008, 14:13 42017 σε απάντηση της 42015

    Απ: Windows service

    ευχαριστώ πολύ.είχες απόλυτο δίκιο.Smile
  •  16-05-2008, 02:06 42030 σε απάντηση της 42011

    Απ: Windows service

    αν και μπορείς σε ένα service να βάλεις φόρμα ή φόρμες ο σωστός και σίγουρος τρόπος είναι αυτός που αναφέρθηκε ήδη πιο πάνω.

    Peter Bournakas
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems