<div dir="ltr">I don't know AsyncPro, but a quick overview of CPortLaz code reveals the usage of a TThread and WaitForMultipleObjects which is very Windows-centric.<div><br></div><div>R#û</div></div><div class="gmail_extra">

<br><br><div class="gmail_quote">2014-04-03 11:14 GMT+02:00 Michael Schnell <span dir="ltr"><<a href="mailto:mschnell@lumino.de" target="_blank">mschnell@lumino.de</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="">On 04/02/2014 10:53 PM, Roberto P. wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I'd like to point out that CPortLaz is multithreaded<br>
</blockquote>
<br></div>
Does it work similar to AsyncPro ?<br>
<br>
In fact, IMHO, it would be desirable to have a component that _internally_ uses TThread to handle blocking ports (either using just a byte-FIDO - this is what AsyncPro does - and/or allowing the user to implement a protocol within the Thread's "Execute" ), and when some information from the port is received (at least one byte or when the protocol handler issues a "ready"), does an Event (aka queued callback) to the main thread.<br>


<br>
The main thread call of course needs to be "scheduled" using means such as TThread.Queue or Application.QueueAsyncCall. (As at the time when AsyncPro was released, Delphi did not provide either, AsyncPro uses Windows Messages by directly accessing the Windows API, which happily is not necessary with Lazarus).<br>


<br>
Unfortunately Thread -> Mainthread signaling is only easily provided in Lazarus in the GUI based Widget Types. (NoGUI still needs an appropriate enhancement.) But of course the user (or even a ComPort Unit) could provide a usable Main Loop implementation.<span class="HOEnZb"><font color="#888888"><br>


<br>
-Michael</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
--<br>
______________________________<u></u>_________________<br>
Lazarus mailing list<br>
<a href="mailto:Lazarus@lists.lazarus.freepascal.org" target="_blank">Lazarus@lists.lazarus.<u></u>freepascal.org</a><br>
<a href="http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus" target="_blank">http://lists.lazarus.<u></u>freepascal.org/mailman/<u></u>listinfo/lazarus</a><br>
</div></div></blockquote></div><br></div>