baza kodu mojej firmy zawiera następujące C# linię:Korzystanie Directory.Exists w folderze sieciowym, gdy sieć jest w dół
bool pathExists = Directory.Exists(path);
przy starcie, ciąg path
dzieje się adres folderu na spółki intranet - coś takiego jak \\company\companyFolder
. Kiedy połączenie z mojego komputera z systemem Windows do intranetu jest włączone, działa to dobrze. Jednak gdy połączenie zostanie przerwane (jak to miało miejsce dzisiaj), wykonanie powyższej linii spowoduje całkowite zablokowanie aplikacji. Mogę tylko zamknąć aplikację, zabijając ją za pomocą Menedżera zadań.
Oczywiście wolałbym, aby w tym scenariuszu był Directory.Exists(path)
wracać false
. Czy jest jakiś sposób na zrobienie tego?
Może to łatwo zlikwidować wszystkie dostępne wątki w puli wątków, powodując dalsze problemy w aplikacji. Jeśli zamierzasz zrobić coś takiego, musisz mieć możliwość zakończenia operacji po upłynięciu limitu czasu. –
@ csharptest.net to jednak problem, nie możesz. Metoda 'Directory.Exists' nie może być kontrolowana z powodu przekroczenia limitu czasu, a ponieważ w zasadzie natychmiast spada do zdarzenia kodu natywnego,' Thread.Abort' nie pomoże. – JaredPar