Oppure

Loading
14/02/20 14:57
alip1
Buon pomeriggio.
Volevo chiedervi se è possibile (e se si come!!??) realizzare una classe in VB.NET (uso VS2012) con un oggetto tipo timer che quando viene istanziata faccia partire il timer (in new() ) ed ad intervalli di tempo stabiliti esponga un determinato evento.

L'oggetto TIMER disponibile si può inserire solo in form, ma non volevo gestire un form ma definire una classe e poi istanziarmi di volta in volta i relativi oggetti. Spero di essermi spiegato.
Grazie per ogni utile consiglio.:-?
aaa
14/02/20 20:40
nessuno
Prendi spunto e completa ...

Public Class MyTimer
    Implements IDisposable

    Public Event MyTick()

    Private WithEvents t As System.Windows.Forms.Timer

    Private Sub t_Tick(sender As Object, e As EventArgs) Handles t.Tick
        RaiseEvent MyTick()
    End Sub

    Sub New(ByVal msInterval As Integer)
        t = New Timer()
        t.Interval = msInterval
        t.Start()
    End Sub

    Public Sub Dispose() Implements IDisposable.Dispose
        t.Stop()
        t.Dispose()
        t = Nothing
    End Sub
End Class


Puoi utilizzarla così

Public Class Form1
    Public WithEvents mt As MyTimer

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        mt = New MyTimer(1000)
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        mt.Dispose()
        mt = Nothing
    End Sub

    Private Sub mt_Tick() Handles mt.MyTick
        Console.WriteLine("MYTICK!")
    End Sub
End Class
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
15/02/20 5:32
alip1
Grazie grazie era quello che cercavo... buona giornata:)
aaa
15/02/20 13:05
alip1
Postato originariamente da nessuno:

Prendi spunto e completa ...

Public Class MyTimer
    Implements IDisposable

    Public Event MyTick()

    Private WithEvents t As System.Windows.Forms.Timer

    Private Sub t_Tick(sender As Object, e As EventArgs) Handles t.Tick
        RaiseEvent MyTick()
    End Sub


    Sub New(ByVal msInterval As Integer)
        t = New Timer()
        t.Interval = msInterval
        t.Start()
    End Sub

    Public Sub Dispose() Implements IDisposable.Dispose
        t.Stop()
        t.Dispose()
        t = Nothing
    End Sub
End Class



Mi da il seguente errore in corrispondenza di: t= NEW Timer()

Error    1    Overload resolution failed because no accessible 'New' accepts this number of arguments.    :d:d:-?:-?

Ho provato anche ad aggiungere:


Imports System.Timers.Timer


ma l'errore rimane.

Mi pare di capire che occorrerebbe passare una: callback As System.Threading.TimerCallBack,....

ma non so cosa fare!!??:pat::pat:



Ultima modifica effettuata da alip1 15/02/20 13:11
aaa