lagu2653 via DotNetMonster.com wrote:
I have a log-in window application. When the user presses the cancel button
it kills another window by it's name and then it exits. The problem is that
if somebody kills the log-in window by terminating the process in the task
manager the other window is not killed.
One solution might be to have a surveillande thread which doesn't die when
the mother-thread dies, and can't be killed in the task manager. As soon as
the log-in window thread stops responding to surveillance messages it will
kill the other window and then exit.
Is this possible?
Sure. Anything is possible, depending only on how much time you want to
put into it and how much of the OS you want to rewrite. :)
That said, your specific idea doesn't sound too hard. But I question
the need for a separate "surveillance" thread that can't be killed in
the task manager. There's no such thing in the OS (you can always stop
a process, and all threads exist within a process), so it would indeed
involve hacking the OS pretty severely to introduce that sort of thing.
IMHO, it would be better to just have the "other window" do the querying
of the login window. Have it send a message to the login window every
half-second or so, asking if it should close. The login window, if it
responds at all, will respond in the negative. That is, it will tell
the other window not to close.
If the user presses the cancel button OR if the login window process is
terminated, the login window simply won't respond to the query. In the
former case, the lack of a response will be by choice, in the latter by
necessity. Either way, the other window won't get a response and will
know to close itself.
Designing it this way means you only have to implement a single
behavior, rather than relying on multiple pieces of code implementing
different algorithms to work well together.
The whole thing sounds a bit house-of-cards-ish (why is this
functionality split into two different processes in the first place?),
but assuming you really want something that does what you're talking
about, I see no need to add yet another process to the mix.
Pete