Hello Shamresh,

> In my client I have set multithreaded to true (but not on the server).

No. Multithreaded is if you create the component in a thread other than
the main thread. However I'm not sure this is related to your problem.

> I have just moved over from indy, so non blocking events are giving me a bit
> of a headache.

You will get used to it very fast. After all, windows / delphi works
also event driven. Some hints could be (maybe related to your problem):

- dont call the message pump from withing an event. This include also a
  modal form (like ShowMessage), or (bad written) components that call
  it internally. If you call the message pump then the event can get
  re-entered at that moment.
- write a state machine. Some event fire and depending on the state you
  can take the right action.
- always have a working message pump. If you block the message pump the
  component will stop working until it pumps again.
- dont write wait loops. it is considered as bad programming technique.
  You also dont write a wait loop waiting until a button is clicked :)

---
Rgds, Wilfried [TeamICS]
http://www.overbyte.be/eng/overbyte/teamics.html
http://www.mestdagh.biz

Saturday, April 8, 2006, 10:11, Shamresh Khan wrote:

> Hi to all,

> I have just moved over from indy, so non blocking events are giving me a bit
> of a headache.

> I have a number of files that are uploaded to my custom server.

> I get an exception raided "Cannot change port if not closed" after several
> files have been uploaded.

> In my client I have set multithreaded to true (but not on the server).

> My server is listening on port 21 and I am not clear why a port change
> exception is raised. The stack dump on the server is :

> TCustomWSocket.RaiseException('Cannot change Port if not closed')
> TCustomWSocket.SetRemotePort('1849')
> TFtpServer.CommandSTOR($E527EC,???,'testFile23.dat-FS=12','')
> TFtpServer.ClientCommand(???,???,???)
> TFtpCtrlSocket.TriggerCommand(???,???)
> TFtpCtrlSocket.TriggerDataAvailable(???)
> TCustomWSocket.ASyncReceive(0,[])
> TCustomWSocket.Do_FD_READ(???)
> TCustomWSocket.WMASyncSelect((1025, 1456, 1, 66179, 1456, 0, 1, 0, 643, 1))
> TCustomWSocket.WndProc((1025, 1456, 1, 66179, 1456, 0, 1, 0, 643, 1))
> XSocketWindowProc(???,???,1456,1)

> Any help would be appreciated.

> Sham.



-- 
To unsubscribe or change your settings for TWSocket mailing list
please goto http://www.elists.org/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

Reply via email to