Frage

Ich verwende einige unmanaged Code wie -

 [DllImport("wininet.dll")]
    private extern static bool InternetGetConnectedState(out int Description, int ReservedValue);
    //Creating a function that uses the API function...
    public static bool IsConnectedToInternet() {
        int Desc;
        return InternetGetConnectedState(out Desc, 0);
    }

Alle Vorschläge, wie ich verfügen kann / Bereinigung dieses extern statische Objekt, wenn ich Entsorgen nennen?

War es hilfreich?

Lösung

Die Sache denken Sie, ist ein ‚extern statisches Objekt‘ ist kein Objekt überhaupt, es ist nur ein Satz von Anweisungen an die Compiler / runtime darüber, wie eine Funktion in einer DLL zu finden.

Wie Sander sagt, gibt es nichts zu bereinigen.

Andere Tipps

Sie haben keine Griffe auf nicht verwalteten Ressourcen hier. Es gibt nichts aufzuräumen.

Es hängt davon ab, ob Sie einen Zeiger bekommen, als ein Beispiel

[DllImport("advapi32.dll", SetLastError = true)]
static extern bool LogonUser(string principal, string authority, string password, LogonSessionType logonType, LogonProvider logonProvider, out IntPtr token);

[DllImport("kernel32.dll", SetLastError = true)]
static extern bool CloseHandle(IntPtr handle);

public void DoSomething() {
    IntPtr token = IntPtr.Zero;
    WindowsImpersonationContext user = null;
    try {
        bool loggedin = LogonUser((string)parameters[1], (string)parameters[2], (string)parameters[3], LogonSessionType.Interactive, LogonProvider.Default, out token);
        if (loggedin) {
            WindowsIdentity id = new WindowsIdentity(token);
            user = id.Impersonate();
        }
    } catch (Exception ex) {

    } finally {
        if (user != null) {
            user.Undo();
        }
        if (token != IntPtr.Zero) {
            CloseHandle(token);
        }
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top