sto facendo un Drag Drop per applicazione esterna in questo modo:DoDragDrop congela WinForms app volte
string[] files = new string[/* */];
// get files
DataObject o = new DataObject(DataFormats.FileDrop, files);
DoDragDrop(o, DragDropEffects.Copy | DragDropEffects.Move);
e alcune applicazioni prenderanno i file e andare avanti per la loro elaborazione e la mia app è libero di fare è roba , ma alcune app renderanno la mia app bloccata finché non processerà tutti i file ... c'è un modo per aggirare questo? Ho provato a farlo in una discussione ma non ha funzionato così bene - non ha funzionato affatto ... quindi, qualche suggerimento su come fare questo codice non appende la mia app?
Hmm, è interessante e scommetto che hai ragione, ma questo non risolve il problema;) Voglio dire ... Non ho bisogno di eseguire DoDragDrop async ... tutto quello che devo fare è avere la parte di scambio dei dati per essere asincrona ... Ho letto da qualche parte che il DataObject dovrebbe implementare qualche interfaccia asincrona ma non riesco a trovarlo ora ... Sai forse dove posso trovare il 'posto' dove il mio l'app scambia i dati con l'altra app? (utilizzando DoDragDrop ofc) – argh
La parte di scambio dati si trova all'interno di DoDragDrop, quindi se si desidera che l'interscambio di dati sia asincrono, è necessario inserire DoDragDrop su un altro thread. e deve essere un thread STA. Sai come forzare un thread per essere STA in .NET? –
Beh ... correggetemi se sbaglio, ma se ho capito: [STAThread] void Main (string [] parametri statici) allora è eseguito in STA Filo, giusto? – argh