Sto utilizzando il seguente codice C# per leggere un file di testo molto piccolo su una condivisione di rete:OpenRead asincrono
string fileContent;
using (var stream = File.OpenRead(filePath))
using (var reader = new StreamReader(stream, FileEncoding))
{
fileContent = await reader.ReadToEndAsync();
}
Anche se il file di testo è molto piccolo (meno di 10 KB) questa operazione a volte prende ~ 7 secondi per correre. Quando ciò accade, ho notato la maggior parte del tempo viene speso per
File.OpenRead(filePath)
Ciò è probabilmente dovuto a Windows dover risolvere la condivisione di file e di acquisire le serrature sul file attraverso la rete. Poiché la chiamata al metodo non è asincrona, questo sta bloccando il thread corrente per diversi secondi.
C'è un modo sicuro di leggere un file dal disco in modo asincrono che esegue anche OpenRead in modo asincrono?
Hai provato a copiare o spostare il file in locale prima e poi a leggerlo? Provalo solo se non lo hai già provato, questo potrebbe mostrare altri possibili problemi in rete, se così fosse. –