I have a class (NamedPipeManager) which has a thread (PipeThread) that waits for a NamedPipe connection using (ConnectNamedPipe) and then reads (ReadFile) - these are blocking calls (not-overlapped) - however there comes a point when I want to unblock them - for example when the calling class tries to stop the NamedPipeManager...

How can I interupt it? Using Thread.abort? Thread.interrupt? Is there a proper way to handle this?
Refer to the code below which illustrates my current situation

        NamedPipeManager np = new NamedPipeManager();
            ... do stuff ...
        ... do stuff ...
        np.Stop();		// at this point I want to stop waiting on a connection

    class NamedPipeManager
    private Thread PipeThread;
    public NamedPipeManager
        PipeThread = new Thread(new ThreadStart(ManagePipes));
        PipeThread.IsBackground = true;
        PipeThread.Name = "NamedPipe Manager";

    private void ManagePipes()
        handle = CreateNamedPipe(..., PIPE_WAIT, ...);
        ConnectNamedPipe(handle, null);		// this is the BLOCKING call waiting for client connection
        ReadFile(....);				// this is the BLOCKING call to readfile after a connection has been established

    public void Stop()
        /// This is where I need to do my magic
        /// But somehow I need to stop PipeThread
        PipeThread.abort();		//?? my gut tells me this is bad

So, in function Stop() - how would I gracefully unblock the call to ConnectNamedPipe(...) or ReadFile(...)?

Any help would be appreciated.

commented: unreformed cross-poster -7

Once before and now again
What makes your posts so damn important that they must always be asked on two forums in parallel?

Again - asI asked you previously - is there a rule againt doing it?
Most often people on the 2 different forums are not the same, and I get various answers.

So please - if this is a rule let me know - otherwise please explain why this causes you such an issue ...