Results 1 to 8 of 8

Thread: synchronize in een DLL

  1. #1
    notice-itter SvG's Avatar
    Join Date
    Apr 2002
    Location
    's-Hertogenbosch
    Posts
    4,865

    synchronize in een DLL

    Hallo iedereen,

    ik heb een DLL, en in deze DLL wordt gebruik gemaakt van een thread, en nu wil ik de synchronize procedure aanroepen, maar dit lukt me niet.., als ik compileer zie ik netjes dat de code wordt doorlopen dankzij breakpoints, maar nadat de synchronize is aangeroepen gebeurd er niets meer

    Is er nog iets wat ik meer moet doen om synchronize te gebruiken in een DLL, of is het niet mogenlijk ( al lijkt het me sterk.. )

    wie o wie..
    !

  2. #2
    Door de manier waarop synchronize werkt kan het niet zomaar gebruikt worden voor een thread in een DLL. Het werkt wel als je er voor zorgt dat het Application object van je DLL gelijk gemaakt wordt met die in je App. Dat kan door de pointer door te geven aan je DLL of door gebruik te maken van runtime packages.

    Zie over Delphi en Threads ook
    - http://www.pergolesi.demon.co.uk/prog/threads/ToC.html
    - http://www.sklobovsky.com/community/index.html
    Last edited by Lord Larry; 23-Feb-03 at 20:39.
    We adore chaos because we like to restore order - M.C. Escher

  3. #3
    notice-itter SvG's Avatar
    Join Date
    Apr 2002
    Location
    's-Hertogenbosch
    Posts
    4,865
    hoi

    bedankt voor je reactie! ik kende de links al, maar heb er geen informatie uit kunnen halen die mij kon helpen om een synchronized call te kunnen laten werken in een DLL Ik heb geprobeerd om de application.handle uit mijn DLL gelijk te stellen aan die van mijn exe. Maar dit werkte niet, toen heb ik geprobeerd of het lukte als ik grofweg het hele application object van mijn exe over die van mij DLL te schrijven, maar ook dit lukte niet

    ik heb 2 projecten bijgevoegd, een DLL en een normaal project, die dus datgene zouden moeten doen wat ik wil..

    zou iemand eens kunnen kijken of die het wel werkende kan krijgen?

    http://members.lycos.nl/SVG1986/uploads/

    en dan SynchronizeInDll.zip
    !

  4. #4
    Member
    Join Date
    Jan 2003
    Location
    Den Haag
    Posts
    55
    Als je wilt dat een stukje code uitgevoerd wordt in de MAINTHREAD, en je kunt Synchronize niet gebruiken, kun je altijd nog een SendMessage overwegen.
    Dan zet je in de TMsg structuur en dan bijv. de LParam het adres van de procedure die je uitgevoerd wilt hebben in de mainthread.

    Sendmessage komt pas terug als de mainthread het bericht ontvangen heeft.



    Frank

  5. #5
    Senior Member PsychoMark's Avatar
    Join Date
    Nov 2001
    Location
    Raamsdonksveer
    Posts
    10,269
    Wat ik me direct afvraag: waarom zou je willen Synchronizen in een DLL? Waarom een aparte thread in de DLL aanroepen, is 't niet taktischer om de functionaliteit in de DLL te gooien en de thread zelf in de applicatie?

    Het lijkt mij persoonlijk niet netjes om een DLL af te laten hangen van de main thread van een applicatie. Je kan natuurlijk een hele goeie reden hebben, dan hoor ik die uiteraard graag . En misschien zijn er alternatieve mogelijkheden, who knows...
    Qui custodiet ipsos custodes

  6. #6
    notice-itter SvG's Avatar
    Join Date
    Apr 2002
    Location
    's-Hertogenbosch
    Posts
    4,865
    het is een DLL waar ik het MSN-protocol heb gedumpt En dan ben ik afhankelijk van wat de server doet, en die thread zorgt ervoor dat zodra er gegevens binnenkomen bij mijn idTCPClient dat deze worden behandelt. De thread is dus de listener van mijn TCPClient.. Ik zou de thread ook in de mainthread kunnen zetten, maar ik wil eigenlijk een bijna compleet onafhankelijke DLL maken.
    Mijn programma zegt tegen de gebruiker dat er een TMsnObject moet worden aangemaakt. Dan hoeft mijn programma alleen nog maar wat gegevens in te voeren en de Connect() procedure aan te roepen. Niemand die dan nog last heeft van stukken code, want die zitten al in de DLL
    !

  7. #7
    Je kan andere synchronizatie methoden gebruiken ipv Synchroinze. Zoals een mutex of een semafoor.
    We adore chaos because we like to restore order - M.C. Escher

  8. #8
    notice-itter SvG's Avatar
    Join Date
    Apr 2002
    Location
    's-Hertogenbosch
    Posts
    4,865
    ik gebruik Synchronize omdat ik events wil triggeren.. Deze events staan in mijn applicatie en moeten de mogenlijkheid hebben om met de componenten op mijn form te kunnen spreken. Wil ik dit op een veilige manier doen dan moet ik gebruik maken van Synchronize.. Een mutex of Semafoor is alleen goed als ik een stuk geheugen wil beschermen tegen tegelijkertijd lopende acties in dat stukje geheugen ( toch? )
    !

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. DLL vrijgeven vanuit een DLL
    By Pray in forum Algemeen
    Replies: 6
    Last Post: 20-Nov-04, 13:25

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •