Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - realizzare una classe con timer
Forum - C# / VB.NET - realizzare una classe con timer

Avatar
alip1 (Normal User)
Rookie


Messaggi: 38
Iscritto: 12/08/2019

Segnala al moderatore
Postato alle 15:57
Venerdì, 14/02/2020
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.:-?

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6117
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 21:40
Venerdì, 14/02/2020
Prendi spunto e completa ...

Codice sorgente - presumibilmente VB.NET

  1. Public Class MyTimer
  2.     Implements IDisposable
  3.  
  4.     Public Event MyTick()
  5.  
  6.     Private WithEvents t As System.Windows.Forms.Timer
  7.  
  8.     Private Sub t_Tick(sender As Object, e As EventArgs) Handles t.Tick
  9.         RaiseEvent MyTick()
  10.     End Sub
  11.  
  12.     Sub New(ByVal msInterval As Integer)
  13.         t = New Timer()
  14.         t.Interval = msInterval
  15.         t.Start()
  16.     End Sub
  17.  
  18.     Public Sub Dispose() Implements IDisposable.Dispose
  19.         t.Stop()
  20.         t.Dispose()
  21.         t = Nothing
  22.     End Sub
  23. End Class



Puoi utilizzarla così

Codice sorgente - presumibilmente VB.NET

  1. Public Class Form1
  2.     Public WithEvents mt As MyTimer
  3.  
  4.     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  5.         mt = New MyTimer(1000)
  6.     End Sub
  7.  
  8.     Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
  9.         mt.Dispose()
  10.         mt = Nothing
  11.     End Sub
  12.  
  13.     Private Sub mt_Tick() Handles mt.MyTick
  14.         Console.WriteLine("MYTICK!")
  15.     End Sub
  16. 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à.
PM Quote
Avatar
alip1 (Normal User)
Rookie


Messaggi: 38
Iscritto: 12/08/2019

Segnala al moderatore
Postato alle 6:32
Sabato, 15/02/2020
Grazie grazie era quello che cercavo... buona giornata:)

PM Quote
Avatar
alip1 (Normal User)
Rookie


Messaggi: 38
Iscritto: 12/08/2019

Segnala al moderatore
Postato alle 14:05
Sabato, 15/02/2020
Testo quotato

Postato originariamente da nessuno:

Prendi spunto e completa ...

Codice sorgente - presumibilmente VB.NET

  1. Public Class MyTimer
  2.     Implements IDisposable
  3.  
  4.     Public Event MyTick()
  5.  
  6.     Private WithEvents t As System.Windows.Forms.Timer
  7.  
  8.     Private Sub t_Tick(sender As Object, e As EventArgs) Handles t.Tick
  9.         RaiseEvent MyTick()
  10.     End Sub
  11.  
  12.  
  13.     Sub New(ByVal msInterval As Integer)
  14.         t = New Timer()
  15.         t.Interval = msInterval
  16.         t.Start()
  17.     End Sub
  18.  
  19.     Public Sub Dispose() Implements IDisposable.Dispose
  20.         t.Stop()
  21.         t.Dispose()
  22.         t = Nothing
  23.     End Sub
  24. 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:

Codice sorgente - presumibilmente C# / VB.NET

  1. 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 il 15/02/2020 alle 14:11
PM Quote