Ho un progetto legacy con centinaia di firme dei metodi per un evento Winforms. Ovviamente quelli attuali non voglio andare a fare BeginInvoke/EndInvoke perché questo causerà problemi di threading dell'interfaccia utente.Come determinare se il metodo è asincrono in fase di esecuzione
Tuttavia ho bisogno (a causa di deadlock) di poter contrassegnare queste firme come asincrone per gestire alcuni comandi asincroni che dobbiamo essere in grado di fare. Nessun altro modo si traduce in qualcosa di diverso da un punto morto.
Posso chiamare correttamente l'evento con BeginInvoke e funziona perfettamente e async correttamente ecc. Tuttavia, questo lo spezza in un altro thread e interrompe le vecchie implementazioni che non vogliamo passare e rendere async e Invoke consapevole.
Quindi stavo investigando usando l'event.GetInvokationList() e collegandomi e chiamandoli separatamente. Se il metodo era asincrono, quindi inizio/fine invoca. Altrimenti chiamalo direttamente sul thread dell'interfaccia utente.
Il mio unico problema è che non riesco a trovare alcun modo attraverso il riflesso per dire se la firma del metodo è asincrona o meno.
Qualcuno sa come capire se un metodo è asincrono o meno da MethodInfo o qualcos'altro dai valori GetInvokationList()?
Grazie!
Funziona perfettamente! Grazie! –