Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. 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)
Pro


Messaggi: 139
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: 6402
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)
Pro


Messaggi: 139
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)
Pro


Messaggi: 139
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