Non per fare discussione... ma mi sembra brutto abortire a metà il caricamento di un immagine (ma anche di altri compiti).
E dov'è scritto? Se in quel momento non serve caricarla è brutto farlo non è brutto interrompere il caricamento.
Dato che, come hai detto, la sequenza degli eventi è 1) click 2) doppioclick, e dato che quando si comincia a fare il doppio click il pc non può prevedere il futuro, la soluzione più logica è aspettare un intervallo di tempo entro il quale potrebbe essere triggerato un doppio click, e se davvero avviene, far partire il codice del doppio click, altrimenti se non avviene quello del click.
Come ti ho già spiegato la soluzione più logica è lasciare che le operazioni da eseguire vengano gestite negli eventi corretti, il caricamento di un'immagine memorizzata in un record di una DataGridView non deve essere gestita attraverso l'evento click perchè ciò che ci interessa in quel momento è sapere quale record della DataGridView è il record corrente al fine di individuare il path corretto del file (questa era la richiesta di giobaxx) e non sapere se l'utente ha fatto click sulla DataGridView. Quindi ciò che è sbagliato è l'approccio al gestore eventi, giobaxx sta usando l'evento sbagliato per caricare l'immagine e la prima risposta di Andreaz è la + corretta di questo thread e ti spiego perchè:
1) Il click viene scatenato quando l'utente preme su qualsiasi punto della datagridview non necessariamente c'è una modifica della posizione del record corrente, quindi l'immagine non deve essere caricata
2) L'utente può modificare la posizione della riga corrente anche agendo sulle freccette da tastiera e quindi NON scatenando l'evento click con la conseguenza che l'immagine non viene caricata
3) L'utente può costantemente cliccare la stessa riga anche n volte di seguito con conseguente caricamento dell'immagine per n volte
4) Il caricamento di un'immagine può richiedere molto tempo e va gestita come fosse un'operazione asincrona poichè non si sa bene la dimensione della stessa.
5) Non è detto che l'operazione di caricamento dell'immagine debba essere portata a completamento e per questo devo avere la possibilità di verificare le condizioni e di interromperla usando un'operazione asincrona attraverso un backgroundworker oppure attraverso un delegate su thread separato.
6) Non ha alcun senso gestire un evento sincrono come il click o il double click attraverso una procedura asincrona perchè potrebbe dar luogo a comportamenti imprevisti nei confronti dell'utente, sopratutto nel caso in cui si accavallino gli eventi. Prova a gestire le cose come tu hai detto e a cliccare ripetutamente sulla datagridview e vedi cosa succede... in alcuni casi ti sposti su un altro record e non ti carica l'immagine oppure credi di aver fatto doppio click e non succede niente perchè il pc non recepisce le istruzioni corrette.
7) Prova a modificare l'intervallo del doppio click sul sistema operativo e poi mi dici cosa succede mantenendo gli intervalli come hai impostato sulla procedura.
Spero di aver sufficientemente chiarito la cosa e che giobaxx abbia sufficienti elementi in mano per valutare la soluzione migliore per lui e se necessiti di ulteriori spiegazioni sulle tecniche proposte basta fare un fischio.
HTH
Alberto.