• Win Internet API產生的鬼影


    在做案子的時候﹐用C#調用WinInet API, 其中有一個函數是刪除一個FTp folder下所有的Normal文件, 所以用WinInet API中的FtpFindFirstFile函數﹐剛開始使用這個函數的時候對于dwFlag參數給了一個0. 在真正使用過程中發現第一次刪除的時候是可以正確刪除﹐但是在關閉連接后﹐再刪除相同Folder下的文件時(注意此Folder已被第一次調用時清空了), 跟蹤時發現此Folder下仍然存在文件(實際上已經不存在了)。最初考慮有可能是dot net framework中的垃圾回收機制并未執行close()動作﹐于是在close()后在強制回收. GC.Collect(). GC.WaitForPendingFinalizers(); 但仍不啟動作﹐上網找了許久﹐原來是dwFlag用的不對。將它改成:

    const int INTERNET_FLAG_RELOAD = unchecked((int)0x80000000);

    ....

    IntPtr hFind = NativeMethods.FtpFindFirstFile(hConnect, filter, out fileData, INTERNET_FLAG_RELOAD, IntPtr.Zero);

    這樣每次find的時候都強制從服務器重新取得﹐而不是從Cache中取得.

  • 相关阅读:
    vue项目架构
    vue.js 视频播放
    Intellij使用"easyexplore"
    ScrollView嵌套GridView不显示顶部
    Android开发日志统一管理
    Android带弹性的View
    Mysql数据库乱码
    为Activity生成桌面快捷方式
    二维码扫描ZXing简化
    减少XML文件数
  • 原文地址:https://www.cnblogs.com/sdikerdong/p/1267580.html
Copyright © 2020-2023  润新知