Let Explorer wait on the drive....
Thanks for the ideas.
Scott - I understand your idea for a keep-alive, but the truth is that I kind of like the idea that the drive stops spinning when in non-use. It seems to me (correct me if I'm wrong) that this improves the odds of the drive surviving in case the power is cut. Over the last 15 years I've lost a number of external drives to power issues, including an Iomega Jaz drive that was destroyed when somebody tripped over the power cord. I'd imagine that the chances of survival are much higher if the drive has already spun down and the parts are no longer moving.
Charles - I tried your idea, but I see now that things are not completely consistent. Specifically, when I tried it now, "start d:" executed immediately, and it was only after exploring two levels deep in the directory that the spin-up began. I guess the file system had cached a portion of the directory structure.
Overall, I think that what might be most useful here would be to have the ability within TCC to break (ctrl-c) a waiting file operation even though it has not completed or reached the timeout value. This is something that I've raised before regarding "cd" and "dir" commands on ftp servers, which can also take a very long time to timeout. Here, too, it would be nice if Ctrl-C were an option, rather than having to wait for the whole spin-up (or timeout).
In terms of implementation - I understand that right now TCC doesn't have the option of responding to a Ctrl-C keypress in these situations, because it is stuck waiting for a response from the file system. However, I'd suggest that this can be effectively solved by using a second thread to do the file system call. The first thread would wait either for Ctrl-C or for completion of the second thread. If Ctrl-C is hit before the second thread completes, TCC can continue as normal and receive further commands (in this case, the second thread will continue to wait until the file system's response or timeout, at which point it will simply discard the result and exit).
What do y'all think about this proposal? If you think it makes sense, I'll add it to the uservoice forum.