WaitForMultipleObjects / Handle zum array übergeben



  • Das Problem ist, dass Du hier managed und unmanaged Code mixst. Das ist IMHO nicht empfohlen. Warum verwendest Du nicht die passenden WaitHandle-Klassen aus dem .NET-Framework? (also z.B. AutoResetEvent, oder Mutex).
    Dann hättest Du die ganzen Probleme nicht. Da könntest Du einfach WaitHandle::WaitAll(...) aufrufen...



  • ganz einfach: ich wusste nicht das ich unmanaged code verwende, bzw. dass es auch eine Funktion gibt, die das ganze mit managed code macht.
    Ich habe das ganze System noch nicht komplett durchschaut. Allerdings wird mir jetzt einiges klarer.
    Ich werde mal nach WaitAll() gucken.



  • so, jetzt hab ich nachgeschaut.
    WaitAll() wartet auf alle Signal, erst wenn alle signaled sind kommt ein true zurück. Das ist micht das gleich wie WaitForMultipleObjects, das sollte nämlich auf irgendeines der Signale warten, und das ist es was ich brauche.



  • WaitAny 🙄



  • ok danke.
    ich hab dann mal in der msdn nachgeschaut, aber mit managed code sieht das alles ziemlich kompliziert aus. Ich durschau das nicht mehr, muss aber heute noch fertig werden.
    Ich weiss, dass das hier nicht gerne gesehen wird, aber könnte mir jemand den Code posten, wie ich zwei Events öffne, und dann mit WaitAny auf eines von beiden warte?
    Währe sehr nett.... 😃



  • Originalhanno schrieb:

    ich hab dann mal in der msdn nachgeschaut, aber mit managed code sieht das alles ziemlich kompliziert aus. Ich durschau das nicht mehr, muss aber heute noch fertig werden.

    Wenn Du heute noch fertig werden willst, dann solltest Du nicht so ein murx aus managed und unmanaged Typen machen. Da wirst Du später nie mehr durchblicken (geschweige denn jetzt).

    Originalhanno schrieb:

    Ich weiss, dass das hier nicht gerne gesehen wird, aber könnte mir jemand den Code posten, wie ich zwei Events öffne, und dann mit WaitAny auf eines von beiden warte?

    Da ich nicht weiss was Du genau machen willst, kann ich Dir da nicht so viel helfen. Und eine

    gcnew AutoResetEvent();
    

    wirst Du ja selber hinbekommen, oder?
    Und ein

    array<WaitHandle^>^ handles
    

    an

    WaitHandle::WaitAny(handles);
    

    zu übergeben dürfte ja auch nicht so schwierig sein...



  • danke für die Mühe.
    Allerdings habe ich mich noch nicht mit managed Code beschäftigt, deshalb sieht das ganze für mich aus, als wenns ne neue Sprache währe.
    Die Hilfe in der MSDN durchschau ich auch nicht:

    [C++]
    public __gc __sealed class AutoResetEvent : public WaitHandle
    

    😮 kann ich nix mit anfangen, dazu fehlt mir was...

    Also werd ich wohl aufgeben müssen, wenn es nicht eine Möglichkeit gibt, das ganz mit unmanaged Code zu machen. 😞



  • Originalhanno schrieb:

    Allerdings habe ich mich noch nicht mit managed Code beschäftigt

    Hmm... was soll ich jetzt dazu sagen? Verwendest Du Windows-Forms? Ja? Na dann hast Du Dich schon mit managed Code beschäftigt.
    Wenn Du unmanaged machen willst, verwende MFC oder sonstige UI-Libs!!!!!

    Originalhanno schrieb:

    deshalb sieht das ganze für mich aus, als wenns ne neue Sprache währe.

    Es ist eine standardisierte Erweiterung von C++.

    Originalhanno schrieb:

    Also werd ich wohl aufgeben müssen, wenn es nicht eine Möglichkeit gibt, das ganz mit unmanaged Code zu machen. 😞

    Natürlich geht es mit unmanaged Code! Aber Du verwendest sowohl managed als auch unmanaged Code!

    Fazit: Verwende entweder unmanaged Code oder managed Code. Aber bitte mische es nur, wenn Du genau tust was Du machst!



  • Fazit: Verwende entweder unmanaged Code oder managed Code. Aber bitte mische es nur, wenn Du genau tust was Du machst!

    😃
    Werd ich machen, äh tun...



  • Originalhanno schrieb:

    Werd ich machen, äh tun...

    Mist... Du hast es gemerkt 🕶


Anmelden zum Antworten