windows - Sådan: Forhindre Timeout Når Inspecting Unavailable Network Share - C #

Indlæg af Hanne Mølgaard Plasc

Problem



Vi har nogle grundlæggende C # logik, der gentager over en mappe og returnerer mapperne og filerne indenfor. Når der køres mod en netværksandel (\\ server \ share \ folder), der er utilgængelig eller ugyldig, synes koden at 'hænge' i ca. 30 sekunder, inden den vender tilbage fra opkaldet.


Jeg vil gerne ende med en metode, der forsøger at få mapper og filer fra den givne vej, men uden timeout -perioden. Med andre ord, for at reducere eller eliminere timeout helt.


Jeg har prøvet noget så simpelt som at validere eksistensen af ​​telefonbogen på forhånd, og tro at et 'utilgængeligt' netværksdrev hurtigt ville returnere falsk, men det fungerede ikke som forventet.


System.IO.Directory.Exists(path) //hangs 

System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(path); //hangs


Eventuelle forslag til, hvad der kan hjælpe mig med at opnå en effektiv (og forhåbentlig forvaltet) løsning?

Bedste reference


Placer det på egen tråd, hvis det ikke kommer tilbage i en vis tid, fortsæt.

Andre referencer 1


Du kan bruge denne kode:


var task = new Task<bool>(() => { var fi = new FileInfo(uri.LocalPath); return fi.Exists; });
task.Start();

return task.Wait(100) && task.Result;

Andre referencer 2


Måske kan du prøve at pinge serveren først, og kun bede om telefoninfo, hvis du får et svar?

Andre referencer 3


Se...


Hurtigere DirectoryExists funktion?


... til en måde at fastsætte gennemførelsestiden for Directory.Exists