2012-01-03 2 views
2

Фон: Мы используем базу данных SQLCE в нашем приложении Windows. Некоторые пользователи предпочитают хранить эту базу данных в сети для простого совместного использования пользователями (не одновременно). Когда база данных открыта на сетевом диске, мы хотим скопировать базу данных в локальную папку для лучшей производительности и обратно, когда приложение закрывается. Причина этого в том, что в некоторых сетях производительность просто неприемлема (и да, пользователь не должен размещать базу данных там, но они это делают).Как определить, находится ли файл в сети?

Наше текущее обнаружение сетевого файла просто использует DriveInfo и DriveType == DriveType.Network, но это также ловит локальные папки, сопоставленные с диском и другими подобными сценариями (сообщается от пользователей). Есть ли лучший способ действительно определить, есть ли файл в сети или даже лучше любое медленное соединение (позднее, вероятно, потребуется какое-то измеренное чтение большого файла, что нам не очень интересно делать, поэтому мы я соглашусь на первую часть)? Я не думаю, что .Net напрямую поддерживает это, но P/Invoke так же хорош.

Заранее спасибо.

+0

Следует отметить, что сеть не обязательно равно медленное соединение, не больше, чем локальное запоминающее устройство равно быстрое соединение (например, низкосортной флэш-памяти может быть на порядок медленнее, чем сетевой ссылки). – Piskvor

+0

Возможно, вы захотите проверить это [ссылка] [1]. [1]: http://stackoverflow.com/questions/458363/determining-if-file-exists-using-c-sharp-and-resolving-unc-path – TambaySaPinas

+0

Хорошо, сетевое соединение может быть быстрее, но обычно это не так, и это не то, что сообщают наши пользователи. Мы рады, что можем удовлетворить большинство пользователей, которые, по нашему мнению, возможны, если мы сможем найти лучший способ определить, когда файл находится в «реальной» сети. – rebel

ответ

Смежные вопросы