Integrare un funzione di Reminder in una applicazione esistente

sabato 13 giugno 2015 - 11.07
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Windows 7  |  Visual Studio Express  |  MySQL 5.1  |  Access (.mdb)  |  Firefox

ravalon Profilo | Expert

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

Ma perchè non usi un TaskScheduler?
Scrivi l'evento in operazioni pianificate di Windows ed il gioco è fatto!

ravalon Profilo | Expert

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

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

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

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

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

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

Si ho una finestra madre che contiene diverse finestre figlie....come dovrei gestirlo secondo te ?

ysdemarc Profilo | Expert

Credo che questo faccia proprio al caso tuo: https://msdn.microsoft.com/it-it/library/swx5easy.aspx
Vincenzo
Programmatore sbilenco

ravalon Profilo | Expert

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

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

Grazie mille.... in questo modo appesantisco di meno il mio gestionale ?

ysdemarc Profilo | Expert

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

Grazie per i tuoi suggerimenti
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 !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5