[ERLEDIGT] Macht ein eigenes in dieser Situation Sinn?

  • VB.NET
  • .NET (FX) 4.0

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Drahuverar.

    [ERLEDIGT] Macht ein eigenes in dieser Situation Sinn?

    Hey Leute,

    momentan nutze ich einen Zähler, um zu überprüfen, wann ich meine Methode starten möchte.
    Sobald der Zähler auf, sagen wir mal 1000 steht möchte ich loslegen.
    Da in 4 möglichen Events dieser Wert 1000 erreicht werden könnte, möchte ich einen Event Handler erstellen,
    der sobald meine counter-variable den wert 1000 erreicht hat, abgefeuert wird.
    So müsste ich nicht in jedem Event eine If Abfrage reinbasteln.

    Ginge das überhaupt so? 8|
    Bin bei Events doch noch ein ziemlicher Grünschnabel, deswegen die Frage.

    Grüße!
    Option Strict On!
    Wenn ich dich richtig verstehe brauchst du kein Event, sondern du musst nur sobald einer der Zähler 1000 erreicht alle Events beenden.
    Das kann du mit einer Public ZielErreicht as Boolean ermöglichen. Beim Hochzählen einfach prüfen ob ZielErreicht und bei 1000 ZielErreicht auf True setzen. fertig.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."

    Drahuverar schrieb:

    in 4 möglichen Events
    Jetzt musst Du überlegen, ob diese Events gemischt ineinander durcheinander kommen können, also dass der 2. startet, obwohl der 1. noch gar nicht gesendet wurde.
    Wenn nein (also alles fein säuberlich nacheinander) kannst Du eine zentrale Routine mit einem Zähler machen und das ganze locken:

    VB.NET-Quellcode

    1. Dim obj As New Object()
    2. SyncLock obj
    3. doIt()
    4. End SyncLock
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ja, ich denke wohl wieder zu blöd...
    Aber ich müsste diese Abfrage dann in 4 Events reinpacken, da ich in 4 Events hochzähle.
    Deswegen dachte ich, ich könne es auch anders machen.

    Also 'ne Flag und 'gudd' is'?

    @RodFromGermany
    Oh, SyncLock sehe ich gerade zum ersten mal. Muss ich mir mal anschauen. So weit bin ich noch nicht bei den Schlüsselworten ^^
    Option Strict On!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Drahuverar“ ()

    Bastel dir einfach eine Klasse welche das für dich erledigt.

    VB.NET-Quellcode

    1. Module Module1
    2. Sub Main()
    3. Dim t As New MyCounter(3)
    4. AddHandler t.Erreicht, AddressOf Test
    5. t.MachWas()
    6. t.MachWas()
    7. t.MachWas()
    8. t.MachWas()
    9. t.MachWas()
    10. t.MachWas()
    11. t.MachWas()
    12. t.MachWas()
    13. Console.Read()
    14. End Sub
    15. Private Sub Test(sender As Object, e As EventArgs)
    16. Console.WriteLine("Erreicht")
    17. End Sub
    18. End Module
    19. ' Class
    20. Public Class MyCounter
    21. Public Event Erreicht As EventHandler
    22. Private _cnt As Integer = 0
    23. Public Property MaxValue As Integer
    24. Public Sub New(max As Integer)
    25. Me.MaxValue = max
    26. End Sub
    27. Public Sub MachWas()
    28. _cnt += 1
    29. If _cnt > Me.MaxValue Then
    30. RaiseEvent Erreicht(Me, New EventArgs())
    31. _cnt = 0
    32. End If
    33. End Sub
    34. End Class


    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten