Problema strano con DoEvents

venerdì 17 giugno 2011 - 08.31
Tag Elenco Tags  C#  |  .NET 3.5  |  Windows 7  |  Visual Studio 2008

hydra Profilo | Junior Member

Salve a tutti. Ho realizzato un programma in c# che mi gestisce il ciclo macchina di un robot. Quando si avvia il ciclo di lavoro il programma fa partire un do{}while, al cui interno ci sono tutte le istruzioni per gestire le lavorazioni; il ciclo termina quando l'operatore clicka un pulsante sull'interfaccia (un button). Per fare in modo che l'operatore possa interagire con l'interfaccia, ho messo un DoEvents come ultima istruzione; diciamo che funziona ma ho riscontrato un piccolo problema: quando si preme il pulsante in realtà sembra quasi che si clicki sulla finestra come per darle il focus, con il risultato che per premere una volta il pulsante lo devo premere due volte perchè appunto la prima volta non prende il comando. Sapete dirmi se c'è un qualche modo per risolvere la cosa?
Un grazie anticipato.

whiteflash Profilo | Junior Member

non puoi mettere il codice ciclico su un thread separato?
tipo BackgroundWorker? così non ti servirebbe usare DoEvent
e per annullare nel pulsante inserisci: backgroundworker.cancelasync
---------------------------------------------
Newbie esperto VB.NET 2010 e WPF

freeteo Profilo | Guru

Ciao,
concordo con quanto detto da whiteflash, dovresti lavorare con un thread diverso da quello principale dell'applicazione (lo stesso che gestisce la UI per intenderci).
Se vuoi puoi anche farlo "a mano" gestendo un nuovo oggetto della classe Thread, ma la cosa più semplice è sicuramente usare un oggetto BackgroundWorker...

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5