• 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中取得.

  • 相关阅读:
    java中的四种内部类
    09_TomCat_基础知识
    08_XML的解析_SAX解析
    IO流07_输入输出流总体系
    IO流06_处理流
    IO流05_OutputStream和Writer输出流
    IO流04_InputStream和Reader输入流
    IO流03_流的分类和概述
    IO流02_文件过滤器
    IO流01_File类
  • 原文地址:https://www.cnblogs.com/sdikerdong/p/1267580.html
Copyright © 2020-2023  润新知