Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Integrare un funzione di Reminder in una applicazione esistente
sabato 13 giugno 2015 - 11.07
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
VB.NET
|
.NET 4.0
|
Windows 7
|
Visual Studio Express
|
MySQL 5.1
|
Access (.mdb)
|
Firefox
ravalon
Profilo
| Expert
689
messaggi | Data Invio:
sab 13 giu 2015 - 11:07
Buongiorno a tutti,
avrei la necessità di integrare una funzionalità di reminder in una applicazione gestionale esistente.
Quello che vorrei fare è permettere alle persone di inserire un allarme riguardo a qualcosada dover ricordare che mostri un avviso allo scattare di una determinata ora di un determinato giorno.
Tutti i dati degli appuntamenti li salverei su database....per il database e la struttura non è un problema...
Quello che vi chiedo è di darmi qualche idea su come poter controllare costantemente (oppure ogni tot minuti) il processo, anche qualora il gestionale non venisse mai toccato (ma fosse comunque avviato) la presenza di eventuali allarmi da ricordare....
Immagino che io debba usare un ticker per controllare in background il tutto....e qui la mia domanda....di quanto appesantirei la mia applicazione che comunque è un'applicazione che è in produzione con dati reali ??
Sarei a rischio di blocchi o impallamenti ?
Secondo voi c'è una via migliore rispetto al controllare ogni tot secondi-minuti tramite l'oggetto ticker ?
Avevo pensato di controllare allo scattare di alcune funzioni critiche del gestionale ma c'è il problema che se un giorno il gestionale non viene utilizzato l'allarme non scatterebbe, con conseguente perdita dello stesso che non sarebbe visualizzato...da qui l'idea di un qualcosa che in background controlli il tutto...
Grazie a chi vorrà aiutarmi anche solo concettualmente.
ysdemarc
Profilo
| Expert
587
messaggi | Data Invio:
lun 15 giu 2015 - 11:50
Ma perchè non usi un TaskScheduler?
Scrivi l'evento in operazioni pianificate di Windows ed il gioco è fatto!
ravalon
Profilo
| Expert
689
messaggi | Data Invio:
lun 15 giu 2015 - 15:19
Se potevo farlo con strumenti esterni non chiedevo come poterlo implementare...
Considera che la maggior parte degli utenti del gestionale sono all'ABC dell'informatica e una cosa come creare uno scheduler su windows è al di fuori della loro portata.
ysdemarc
Profilo
| Expert
587
messaggi | Data Invio:
lun 15 giu 2015 - 16:11
Ma è il tuo programma che deve scrivere in operazioni pianificate, senza intervento dell'utente, parziale o totale, e tu devi fornire eventualmente le interfacce che faresti con il tuo programma.
La comodità è che poi, dopo che dal tuo programma scrivi in operazioni pianificate, da li è possibile avviare sempre il tuo programma se non è avviato e fare tutte le considerazioni del caso, o visualizzare l'evento da una tua interfaccia ecc... ecc...
Non ha senso fare interrogazioni con timer, a parer mio, quando puoi sfruttare il sistema operativo senza appesantirlo ulteriormente.
E comunque se hai necessità di controllare ogni tot di tempo, basta inserire, sempre dal tuo programma l'evento in operazioni pianificate, che a sua volta lancia un tuo programma che fa i controlli, cosicchè se l'utente non avvia il tuo programma c'è chi lo fa per lui.
Altrimenti fai un servizio che faccia lo stesso lavoro.
ravalon
Profilo
| Expert
689
messaggi | Data Invio:
lun 15 giu 2015 - 16:38
Il problema è anche che le operazioni pianificate intervengono su un preciso sistema operativo.
Il mio gestionale consente, da postazioni differenti, di accedere ad un settore di lavoro...e l'utente che accede ad un settore di lavoro deve sempre poter vedere i propri allarmi indipendentemente dalla postazione utilizzata; è anche per questo che salvo su database e vorrei che fosse tutto integrato.
ysdemarc
Profilo
| Expert
587
messaggi | Data Invio:
lun 15 giu 2015 - 16:53
e allora è normale che prima debba essere avviato il programma per ricevere gli allarmi, se non viene avviato non sai mica chi c'è in quella postazione.
Se invece dall'ultima postazione in cui l'utente ha avuto accesso vuoi visualizzare gli allarmi allora forse è un servizio windows quello che ti serve. Ma devi considerare che se l'utente va via ed in quella postazione si mette un'altra persona e non entra ne programma vedrà gli allarmi di altra gente.
A sto punto metterei un temporizzatore, da impostare come tempi di interrogazione, leggerei il db e visualizzerei le eventuali notifiche, ma solo a programma avviato. Non vedo altre soluzioni
Vincenzo
Programmatore sbilenco
ravalon
Profilo
| Expert
689
messaggi | Data Invio:
lun 15 giu 2015 - 16:58
E' quello che avevo chiesto dall'inizio in effetti.... una interrogazione su db una volta avviato il programma....perchè avviare viene sempre avviato, quello che può non avvenire è un intervento sui dati, motivo per cui devo pensare una routine autonoma...
Le mie domande erano....Quanto impatto sulle prestazioni del programma usando un ticker ?
Ci potrebbero essere problemi di blocchi o freeze legati all'integrazione di questo controllo ??
ysdemarc
Profilo
| Expert
587
messaggi | Data Invio:
lun 15 giu 2015 - 17:16
Suppongo che il programma avrà un Main e quindi di li puoi inserire il timer e scatenare l'evento.
E' solo la lettura al db che potresti avere dei rallentamenti.. quindi non puoi di certo considerare di leggere ogni 10 secondi ma almeno 10 minuti.
Se hai finestre modali dovresti considerare di gestirlo in un thread a parte
Vincenzo
Programmatore sbilenco
ravalon
Profilo
| Expert
689
messaggi | Data Invio:
lun 15 giu 2015 - 18:15
Si ho una finestra madre che contiene diverse finestre figlie....come dovrei gestirlo secondo te ?
ysdemarc
Profilo
| Expert
587
messaggi | Data Invio:
mar 16 giu 2015 - 09:13
Credo che questo faccia proprio al caso tuo: https://msdn.microsoft.com/it-it/library/swx5easy.aspx
Vincenzo
Programmatore sbilenco
ravalon
Profilo
| Expert
689
messaggi | Data Invio:
mar 16 giu 2015 - 15:09
molto interessante Ysdmemarc.---co studio un po su...ovviamente questo thread lo devo far partire io dal gestionale, magari racchiudendo tutto il codice su un'unica routine lanciata dal mio software...è corretto?
ysdemarc
Profilo
| Expert
587
messaggi | Data Invio:
mar 16 giu 2015 - 15:22
Io la metterei nella classe Program (dove c'è il main che fa partire la finestra principale dell'applicazione) o al massimo nell'evento Load del Form padre (il form contenitore)
Vincenzo
Programmatore sbilenco
ravalon
Profilo
| Expert
689
messaggi | Data Invio:
mar 16 giu 2015 - 15:26
Grazie mille.... in questo modo appesantisco di meno il mio gestionale ?
ysdemarc
Profilo
| Expert
587
messaggi | Data Invio:
mar 16 giu 2015 - 15:43
La pesantezza delle chiamate al database ci saranno sempre però essendo un thread separato la cosa sarà meno avvertita dall'utente, come se fosse un'altro programma ad agire.. e quindi non avvertiranno, secondo me, rallentamenti significativi durante l'uso del tuo gestionale
Vincenzo
Programmatore sbilenco
ravalon
Profilo
| Expert
689
messaggi | Data Invio:
mar 16 giu 2015 - 16:07
Grazie per i tuoi suggerimenti
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !