Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
No READ EVENTS in a COM dll
Message
From
26/06/1999 16:59:05
 
 
To
26/06/1999 16:47:49
Raul Davila
Davila Programming Services
Toa Alta, Puerto Rico
General information
Forum:
Visual FoxPro
Category:
Classes - VCX
Miscellaneous
Thread ID:
00234103
Message ID:
00234393
Views:
27
I don't blame you for trying to avoid a DO WHILE. I really think your best plan of attack here is the new VFPCOM utility. That way, you can run code when the WinSock control fires its finished(or whatever) event.

>Got it.
>
> I'm trying not to use the DO WHILE loop cause it will swallow the server's resources while waiting for the SMTP server to respond to my winsock control.
>
> I do have to say that I tried READ EVENTS the first time because I thought the DataArrival event was considered a system event not coming from the UI.
>
> Anyway there has to be a way to use event driven programming inside a COM dll.
> I really hope I just haven't found the way to do it and not that the problem is that there simply isn't a way to use an event driven architecture in a COM dll.
>
> I was wondering, if instead of a dll I made an out of process .exe, can I use READ EVENTS? Gonna try it right now.
>
>Thanks!
>
>>A timer won't work, unless you want to jump out of the COM process, and let the client poll the COM server for the results after they are ready.
>>
>>The reason a timer works like this, is that a timer's timer event comes in at it's own root of the call stack: other events and methods that come after a READ EVENTS are initiated by a UI event. So a timer's event wil not keep the processing control in the server.
>>
>>When I said poll, I really meant in a loop (DO WHILE).
>>
>>>Hi Erik:
>>>
>>> Tried something like that.
>>> I put a timer in the class hoping that it would keep VFP6r running while
>>> the winsock control talked to the SMTP server. In the timer event I checkd for CR/LF in the data received, signaling the end of that response.
>>>
>>>MAILER.START_PROCESS
>>> THIS.TIMER.INTERVAL = 100
>>> THIS.CHECK_FLAG = .T.
>>>
>>>TIMER.INTERVAL
>>> IF THISFORM.CHECK_FLAG
>>> IF (CHR(13) + CHR(10)) $ THISFORM.RECEIVED_DATA
>>> THISFORM.CHECK_FLAG = .F.
>>> THISFORM.PROCESS_DATA()
>>> ENDIF
>>> ENDIF
>>>
>>>MAILER.PROCESS_DATA
>>> PROCESS.....
>>> ...........
>>> THIS.CHECK_FLAG = .T.
>>>
>>> As you can see the timer is active at all times but it still jumpes out
>>> exactly at the same place.
>>>
>>>This project is 99% complete, obviously this is the only missing part.
>>>Any more ideas?
>>>
>>>TIA
>>>
>>>>>Hi:
>>>>>
>>>>> I made a class based on form that has a MSWinsock control in it.
>>>>> Using the winsock control I connect to a SMTP server to send emails.
>>>>> It worked flawlessly until I tried to use it in a COM dll.
>>>>>
>>>>>
>>>>>I tried to use READ EVENTS but READ EVENTS does not seem to work
>>>>>inside the COM dll.
>>>>>
>>>>
>>>>READ EVENTS is the command that tells VFP to go into a wait state ready for USER input. It relays processing control to the UI. VFP COM dll cannot have a UI. The Vfp6r.dll (the VFP runtime for single threaded COM servers) probably responds to a READ EVENTS by jumping out of the method, because a REASD EVENTS doesn't belong in a COM dll.
>>>>
>>>>If you want your COM server to wait and poll Winsock, just put in in a loop that checks the ready status of the WinSock control.
Erik Moore
Clientelligence
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform