先日までに作成してあった、
毎日メモ2005(DailyMemo2005)
なかなか使いやすくなったとはいえ、まだまだ不満な面もある。
それの一番な部分が、ネットワークの遅さに起因する日付切り替えの遅延
ありとあらゆる技を使いました。
C++のDLLまで使ったりしました。
しかし、それでも駄目だったのです。
もちろん、ネットワーク経由だから遅いのは当然で、だから、せめてプログレスバーでも表示できればだいぶ違うかとも思ったのですが?
どうも、C#に限らず、CreateFileなどでファイルを開き読み込むときに、Windowsが勝手にキャッシュを行うため、OVERLAPPEDで処理しようとも、実際の読み込みが始まるまでにかなりの時間を要し、ファイルがアプリケーションに読み込まれる頃にはwindowsがキャッシュを終え、プログレスバーは一気に進んでしまうと言う問題が有ることが分かりました。
もちろん、CreateFileにはキャッシュ無しで読み込む設定もありますが??
それはそれで、ネットワーク先じゃなかった場合は、遅くなるんじゃないかと危惧をしており、そう簡単には外せません。
まぁ、シーケンシャルリードしか行わないので、キャッシュ無しでも問題は無いと言えば無いのですが・・・
MSDNの説明に、メモリの確保の仕方とか、いろいろな面で制約がある旨が記載されており、めんどくさそうw
まぁ、もうしばらく調整してみてから、考えることにしますが・・・・
windowsの微妙に変な仕様には困った物です☆
|