Abort (vb.net)

mercoledì 19 novembre 2008 - 17.43

frenk17 Profilo | Junior Member

ciao ragazzi... è possibile fare un pulsante di abort in vb.net, cioè un pulsante che blocchi qualsiasi processo in corso... grazie mille

Anonimo Profilo | Senior Member

>ciao ragazzi...

CIao


> è possibile fare un pulsante di abort in vb.net,
>cioè un pulsante che blocchi qualsiasi processo in corso...

Potresti chiarificare cosa intendi per processo?
Se intendi per processo una serie di istruzioni che sta eseguendo il tuo programma in quel momento credo che dovresti affidarti a un background worker.
Delegando tutte le operazioni a un oggetto di questo tipo hai la possibilità di richiamare un metodo apposito per fermarne l'esecuzione. Sulla documentazione relativa trovi un esempio:

http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx

Riccardo

Lanello Profilo | Senior Member

ciao,

se non usi o non vuoi usare il background worker, ma effettui delle operazioni ripetitive (tipo un ciclo o un popolamento di una datagrid...) puoi impostare una variabile boolean per sapere quando vuoi interrompere quella operazione, nel ciclo non devi far altro che controllare il valore di quella variabile boolean

quando premi il tasto annulla, basta che imposti a true la tua variabile di interruzione.


----------------------------------------------------------------------
http://www.flashinlabs.biz o .com o .net o .it fate voi :P

frenk17 Profilo | Junior Member

ok ragazzi appena ho un attimo di tempo(oggi pomeriggio) provo ad usare background worker che personalmente non conoscevo..
vi faccio sapere
grazie

Anonimo Profilo | Senior Member

>ciao,
>
>se non usi o non vuoi usare il background worker, ma effettui
>delle operazioni ripetitive (tipo un ciclo o un popolamento di
>una datagrid...) puoi impostare una variabile boolean per sapere
>quando vuoi interrompere quella operazione, nel ciclo non devi
>far altro che controllare il valore di quella variabile boolean
>
>quando premi il tasto annulla, basta che imposti a true la tua
>variabile di interruzione.
>
>

Direi che con questa soluzione bisognerebbe stare attenti al caso in cui l'esecuzione "freezi" il form, perchè il questo caso il tasto annulla non sarebbe cliccabile

Riccardo

tonyexpo Profilo | Senior Member

Ciao

per killare la tua applicazione, basta killare il thread corrente:

Threading.Thread.CurrentThread.Abort()

ti consiglio però di spostare eventuali codici "long running" o molto pesanti in un secondo thread, così da lasciare l'interfaccia utente libera di eseguirsi.

L'approccio variabile boolean è utilizzabile, ma per avere una form funzionante senza problemi dovresti mettere il codice che fa il ciclo in un secondo thread, oltre ovviamente a darti un intervallo come ad esempio:

Do If varBool Then 'fai quello che vuoi End If Threading.Thread.Sleep(1000) Loop
per evitare di consumare tutto il tempo della CPU.

Antonio Esposito
MCP, MCTS .NET 2.0 Distributed applications
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