WaitHandle::WaitTimeout Field
.NET Framework (current version)
Indicates that a WaitAny operation timed out before any of the wait handles were signaled. This field is constant.
Assembly: mscorlib (in mscorlib.dll)
This field is one of the possible return values of WaitAny.
The following code example demonstrates how to use the thread pool to simultaneously search for a file on multiple disks. For space considerations, only the root directory of each disk is searched.
using namespace System; using namespace System::IO; using namespace System::Threading; ref class Search { private: // Maintain state information to pass to FindCallback. ref class State { public: AutoResetEvent^ autoEvent; String^ fileName; State( AutoResetEvent^ autoEvent, String^ fileName ) : autoEvent( autoEvent ), fileName( fileName ) {} }; public: array<AutoResetEvent^>^autoEvents; array<String^>^diskLetters; // Search for stateInfo->fileName. void FindCallback( Object^ state ) { State^ stateInfo = dynamic_cast<State^>(state); // Signal if the file is found. if ( File::Exists( stateInfo->fileName ) ) { stateInfo->autoEvent->Set(); } } Search() { // Retrieve an array of disk letters. diskLetters = Environment::GetLogicalDrives(); autoEvents = gcnew array<AutoResetEvent^>(diskLetters->Length); for ( int i = 0; i < diskLetters->Length; i++ ) { autoEvents[ i ] = gcnew AutoResetEvent( false ); } } // Search for fileName in the root directory of all disks. void FindFile( String^ fileName ) { for ( int i = 0; i < diskLetters->Length; i++ ) { Console::WriteLine( "Searching for {0} on {1}.", fileName, diskLetters[ i ] ); ThreadPool::QueueUserWorkItem( gcnew WaitCallback( this, &Search::FindCallback ), gcnew State( autoEvents[ i ],String::Concat( diskLetters[ i ], fileName ) ) ); } // Wait for the first instance of the file to be found. int index = WaitHandle::WaitAny( autoEvents, 3000, false ); if ( index == WaitHandle::WaitTimeout ) { Console::WriteLine( "\n{0} not found.", fileName ); } else { Console::WriteLine( "\n{0} found on {1}.", fileName, diskLetters[ index ] ); } } }; int main() { Search^ search = gcnew Search; search->FindFile( "SomeFile.dat" ); }
Universal Windows Platform
Available since 8
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1
Available since 8
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1
Show: