> Using HTTPCLI AsyncGET how main thread wait for the Async to download the html code. > Code relies on input html code. If i sleep the main ui thread it will become frozen. > I know how to get HTML with Async via Events but i have no idea how program it so > that Main UI thread will wait and then continue.. :)
The component has "Sync" methods as well? Those are based on the "Async" methods (native) using a wait loop. It is much much better to use only async methods. This requires you develop your application with async in mind. This means you don't write code sequentially but rather use the events. At first glance, asynchronous programming is a little bit more difficult to grasp, but once you get it, you'll see it is really easy and powerful? After all, Windows UI is fully asynchronous and event driven: you never wait that the user click on a button. Instead you handle processing in the OnClick handler. This is exactly the same with ICS component: you start an operation (such as a http get) and then exit your routine. When the result is coming, you get an event triggered (OnRequestDone in the http case). Just like you put the code to handle the click on a button in the OnClick event handler, you put the code to process the request result in the OnRequestDone event handler. To correctly develop an application using the async, event driven paradigm, you'll see that a "finite state machine" is a very useful pattern (See http://en.wikipedia.org/wiki/Finite-state_machine as a starting point). To make the story short, applied to Delphi, you define an enumerated type with all the "states" of your application and then use a variable to hold the current state. Once an event occurs, such as a http get request done, you use that state variable to know what to do you the result and to determine what will be the next state. Of course, it is better to split your whole application in sub-problems, each one with his own state machine. This is exactly what ICS components are: state machines applied to specific internet protocols such as the http protocol you use. Hoping this helps. -- francois.pie...@overbyte.be Embarcadero MVP http://www.overbyte.be -- To unsubscribe or change your settings for TWSocket mailing list please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket Visit our website at http://www.overbyte.be