Uso del Timer

venerdì 23 settembre 2005 - 15.32

Lomba Profilo | Newbie

Salve a tutti,
vorrei sapere se posso usare il timer di vb.net per questo scopo:
ad un certo punto del mio programma (che chimo A) devo richiamare un programma esterno (che chiamo B), vorrei poter impostare che se B non ha terminato il suo lavoro in un numero precisato di secondi, A deve terminare B e dare un messaggio di errore.
Ho provato ad impostare un timer che attivo e faccio partire prima di richiamare B, solo che il conteggio dei secondi si svolge dopo che B ha terminato il suo lavoro e non durante, ho provato anche ad impostare il timer in una form diversa da quella in cui richiamo B, ottenendo però lo stesso risultato.
Come posso fare, il timer va impostato in um modo particolare oppure devo usare uno strumeto diverso per raggiungere il mio fine?
Grazie

Brainkiller Profilo | Guru

Ciao,
si può essere utilizzato anche così il Timer. In teoria credo ci siano anche altri modi utilizzando i Thread. E'strano che non ti giri il Timer quando chiami il programma esterno. Secondo me potresti fare così Creare un WorkerThread (tramite classi Thread e ThreadStart) da lì avviare il programma esterno e contemporaneamente attivare il Timer.

Il timer fa un'attività di polling controllando nell'elenco dei processi. Se è presente il programma esterno significa che è ancora in esecuzione diversamente ha già terminato. Se in esecuzione ma ha superato il limite puoi provare ad abbatterlo.

Ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

Lomba Profilo | Newbie

Per prima cosa grazie per l'attenzione, putroppo sono ancora alle prime armi con vb.net e non mi è chiaro come usare questi "Thread", se non ho capito male è un modo per eseguire due operazioni in contemporanea, le mio sapere si ferma però quì. Potresti spiegarmi cosa sono e come si usano, magari con un piccolo esempio? Inoltre quello che ho chiamato "Programma B" in realtà non è un programma vero e proprio, è solo una sorta di libreiria dll, pertanto durante il suo lavoro nel Task manager risulta solo il "Programma A". Quello che quindi vorrei fare è:
1. eseguire A / 2. durante A richimare le dll / 3. dopo x secondi se non ho ancora ottenuto il risultato, aprire un MsgBox indicando che il tempo è esaurioto e chiudere il programma A.
Grazie mille

Brainkiller Profilo | Guru

Si è esatto.
Quando si crea un nuovo processo all'interno del processo possono essere create più unità d'esecuzione o Thread. Tu hai un Thread dove gira la WinForm ma ne puoi creare ulteriori paralleli fino a 25 se non erro in un'applicazione .NET per farci girare altri algoritmi senza bloccare l'applicazione principale. La gestione e la concorrenza dei Thread non è cosa banale. Come crearli e come usarli, basta che guardi nel Framework ci sono esempi e spiegazioni:
http://msdn.microsoft.com/library/en-us/dllproc/base/creating_threads.asp

Ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

Lomba Profilo | Newbie

Dopo un pò di prove sono riuscito a creare due thread in cui eseguire da una parte il timer e, dall'altra, le dll. Tuttavia il problema è rimasto. Ho visto che esistono diversi timer in vb.net. Il "threading.Timer" sembra essere lo strumeto adatto per raggiungere mio scopo, in quanto, se ho capito bene, gestisce in automatico un thread per il timer stesso. Qualcuno può confermare questa mia tesi? Inoltre qualcuno sa mica come si usa? L'esempio presente nella guida di Microsoft non mi è per nulla chiaro.
Grazie mille

fasol Profilo | Junior Member

ciao nel prg b attiva il

DoEvent(in tutte le funzioni)
e prova se funziona....

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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5