Sospetto che se introduci il threading nel processo export-to-Excel, ora avrai due problemi, invece di uno solo.
Devi dare un'occhiata approfondita al codice di esportazione e preferibilmente eseguirlo attraverso un profiler in modo da poter vedere dove viene speso il tempo. Una volta che sai dove sono i colli di bottiglia, puoi applicare la tecnologia giusta per risolvere il problema.
Lanciare i fili a un problema sconosciuto ha una maggiore probabilità di peggiorare (molto) le cose.
Mentre stai investigando su quale sia la radice del problema, puoi considerare di spostare il processo export-to-Excel in un processo in background che può essere eseguito indipendentemente dalla sessione dell'utente. Passare a un processo in background non risolverà il tempo di attesa o le percezioni dell'utente sulle cose, ma consentirà almeno all'utente di andare a lavorare su qualcos'altro mentre attendono il completamento dell'esportazione.
Come segnalato da Doc Brown , l'utilizzo di thread in background è piuttosto comune tecnica per liberare il thread principale. Usando in questo modo un thread in background non introduce le potenziali insidie associate al threading di un processo di esportazione. E puoi spostare il processo sullo sfondo senza introdurre molto, se non del tutto, l'overhead mentale derivante dall'uso di thread asincroni.