Frage

Dokumentation der in der MSDN Laut, Set () und Reset () auf Manual (oder eine Eventwaithandle) gibt einen boolean Indikator, ob die Operation erfolgreich war.

Unter welchen Umständen kann dieser Aufruf return false, und was soll ich tun, wenn es funktioniert?

War es hilfreich?

Lösung

Ich war nicht sicher, wie bei vielen MSDN Beispiele dieser und auf der Suche beantworten Sie die Set-Rückgabewert ignoriert wird, so ist es nicht wichtig sein muss, oder wahrscheinlich.

Aber das war nicht gut genug. Ich feuerte meine VM und ich öffnete Reflector einen Blick auf den Code zu nehmen. Manual hat Set nicht, aber es erbt von Eventwaithandle, das tut. Hier ist der Code:

public bool Set()
{
    bool flag = Win32Native.SetEvent(base.safeWaitHandle);
    if (!flag)
    {
        __Error.WinIOError();
    }
    return flag;
}

Wo SetEvent von Kernel32 importiert wird:

[DllImport("kernel32.dll", SetLastError=true)]
internal static extern bool SetEvent(SafeWaitHandle handle);

Die WinIOError () Aufruf nur Anrufe GetLastWin32Error, die wir über nicht wirklich interessieren. Im Grunde bedeutet dies für den Anruf falsch zurück, etwas ziemlich falsch eingetreten, in dem Win32 nativen Code gehabt hätte.

Putting diese Informationen zusammen mit der Tatsache, dass Code in offizieller MSDN-Dokumentation gehostet ignoriert den Rückgabewert (warum nicht?, Was Sie tun werden, wenn der Kernel sowieso nicht funktioniert?) Sie können es selbst bedenkenlos ignorieren, wenn Sie Ihre reinigen mögen Logik auf ein Bit oder es erhalten und es melden Sie sich, wenn Sie besonders pedantisch sind.

Andere Tipps

Ich bin sicher, dass nicht nur Fehler protokollieren und die Ausführung fortsetzen genug wäre. Falsches Ergebnis von Set () kann falsches Verhalten in Threads synchronozation von Warte Handler verwaltet bringen. Das ist Multithreading ... Meine Vision von Umgang mit falschem Set () Ergebnis -. Wurf Ausnahme, die wahrscheinlich in den meisten Fällen nicht behandeltes werden kann

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top