Jump to content

David Heffernan

Members
  • Content Count

    3534
  • Joined

  • Last visited

  • Days Won

    175

Posts posted by David Heffernan


  1. This is certainly a thing that is routinely done. 

     

    https://en.m.wikipedia.org/wiki/Ephemeral_port

     

    The system has support for generating such ports, I've used it with an Indy server listening on loopback for a client in the same process. I do this to implement an application help browser using an embedded Web browser control. I don't want to use a fixed port number because I don't want to risk clashing with other services. And since I control both server and client an ephemeral port is perfect. 

    • Thanks 1

  2. I haven't got time to look at this in VCL code, but my guess from memory is that you need to be overriding CreateWindowHandle and DestroyWindowHandle instead of CreateWnd and DestroyWnd. 

     

    CreateWindowHandle and DestroyWindowHandle are the methods tasked with he actual creation and destruction of the window. 

     

    Probably when the form is torn down it just calls DestroyWindowHandle and not DestroyWnd. 


  3. 1 hour ago, Steve Maughan said:

    To me this implies it's something to do with Windows 10.

    Usually that's wishful thinking.

     

    What happens next in this thread is that people spend many days suggesting all sorts of things that could be. That doesn't tend to be very productive. Guesswork seldom proves effective. We all know this to be true, and still we do it. 

     

    Getting a stack trace from all threads in your process, during a lock up would help. Again, madExcept would give you that with madTraceProcess. 

    • Like 1

  4. No reason to suspect that COM+ is the problem. Surely its just a defect in your code. Hard to imagine introducing another framework is the easiest solution. In any case I think it sounds like step 1 is to identify the problem precisely. 


  5. With these issues you need to understand the hierarchy of your windows' owner relationships. The term owner is the winapi term. In VCL terms it is popup parent, not to be confused with VCL owner. Start by making a minimal reproduction and try to understand that window owner hierarchy. Read the MSDN docs on window features to understand the impact of window owner. 


  6. 19 minutes ago, Joseph MItzen said:

    Threads are inherently nondeterministic 

    What are you on about. It is perfectly possible to write code that is correct, and behaves in a deterministic fashion with threads.

     

    For sure the order of scheduling and execution is not deterministic, but that doesn't mean that you can't write programs whose behaviour is deterministic. I for one make a living doing just that. 

    • Like 1

  7. 2 minutes ago, Anders Melander said:

    That must have been around the time when I stopped reading the documentation 🙂

    I can't see why it would be classed as a bug though.

    It's a bug for the very reasons that you raised! When the thread was created in the constructor of `TThread` it meant that you couldn't synchronise passing state to the thread before it started.

    • Like 1

  8. Just now, Anders Melander said:

    I think I'll continue to use the create-suspended pattern anyway since it explicitly does what I wish.

    Creating them non-suspended explicitly does what you wish also.

×