2012-01-03 18 views
2

背景: Windowsアプリケーションでは、SQLCEデータベースを使用します。一部のユーザーは、このデータベースをネットワーク上に保存して、ユーザー間で簡単に共有できるようにします(同時ではありません)。データベースがネットワークドライブ上で開かれているときは、パフォーマンスを向上させるためにデータベースをローカルフォルダにコピーし、アプリケーションが終了するとデータベースを元に戻します。その理由は、一部のネットワークではパフォーマンスが単に受け入れられないということです(ユーザーがデータベースを配置しないでください)。ファイルがネットワーク上にあるかどうかを検出するにはどうすればよいですか?

現在のところ、ネットワークファイルの検出にはDriveInfoとDriveType == DriveType.Networkを使用していますが、これはドライブにマップされたローカルフォルダや他の同様のシナリオ(ユーザーから報告されたもの)をキャッチします。ファイルがネットワーク上にあるかどうか、あるいはどんな種類の接続が遅いのかを実際に検出するための良い方法はありますか(後で大まかなファイルの測定読み込みが必要になるかもしれません。最初の部分は解決します)? .Netはこれを直接サポートしているとは思えませんが、P/Invokeはまあまあです。

ありがとうございます。

+0

注を参照してください。 – Piskvor

+0

[link] [1]をチェックしてみてください。 [1]:http://stackoverflow.com/questions/458363/determining-if-file-exists-using-c-sharp-and-resolving-unc-path – TambaySaPinas

+0

さて、ネットワーク接続は高速になる可能性がありますがそれは通常そうではなく、ユーザーが報告しているものではありません。ファイルが「実際の」ネットワーク上に存在するかどうかを判断するためのより良い方法が見つかった場合、可能と思われるユーザーの大部分に応えることができれば幸いです。 – rebel

答えて

0

ネットワークは必ずしもローカルストレージよりも、それ以上の高速接続(例えば低品位フラッシュストレージは、ネットワークリンクよりも遅い大きさのオーダーであることができる)に等しく、低速な接続に等しくないことhttp://www.pinvoke.net/default.aspx/kernel32.getdrivetype

+0

これをテストし、DriveInfoと同じ値を返します。したがって、DriveInfoを使用する利点はありません – rebel

関連する問題