WaitHandle.WaitTimeout フィールドとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > WaitHandle.WaitTimeout フィールドの意味・解説 

WaitHandle.WaitTimeout フィールド

待機ハンドルシグナル状態になる前に WaitAny 操作タイムアウトになったことを示します。このフィールド定数です。

名前空間: System.Threading
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Dim value As Integer

value = WaitHandle.WaitTimeout
public const int WaitTimeout
public:
literal int WaitTimeout
public static final int
 WaitTimeout
public const var WaitTimeout
 : int
解説解説

このフィールドは、WaitAny有効な戻り値1 つです。

使用例使用例

スレッド プール使用してファイル複数ディスク上で同時に検索する方法の例を次に示します。ここでは、各ディスクルート ディレクトリだけを検索します

Imports Microsoft.VisualBasic
Imports System
Imports System.IO
Imports System.Threading

Public Class Test

    <MTAThread> _
    Shared Sub Main()
        Dim search As New
 Search()
        search.FindFile("SomeFile.dat")
    End Sub    
End Class

Public Class Search

    ' Maintain state information to pass to FindCallback.
    Class State
        Public autoEvent As AutoResetEvent
 
        Public fileName As String
         

        Sub New(anEvent As
 AutoResetEvent, fName As String)
            autoEvent = anEvent
            fileName = fName
        End Sub
    End Class

    Dim autoEvents() As AutoResetEvent
    Dim diskLetters() As String

    Sub New()

        ' Retrieve an array of disk letters.
        diskLetters = Environment.GetLogicalDrives()

        autoEvents = New AutoResetEvent(diskLetters.Length - 1)
 {}
        For i As Integer
 = 0 To diskLetters.Length - 1
            autoEvents(i) = New AutoResetEvent(False)
        Next i
    End Sub    
    
    ' Search for fileName in the root directory of all disks.
    Sub FindFile(fileName As String)
        For i As Integer
 = 0 To diskLetters.Length - 1
            Console.WriteLine("Searching for {0} on {1}.",
 _
                fileName, diskLetters(i))
        
            ThreadPool.QueueUserWorkItem(AddressOf FindCallback,
 _ 
                New State(autoEvents(i), diskLetters(i) &
 fileName))
        Next i

        ' Wait for the first instance of the file to be found.
        Dim index As Integer
 = _
            WaitHandle.WaitAny(autoEvents, 3000, False)
        If index = WaitHandle.WaitTimeout
            Console.WriteLine(vbCrLf & "{0} not found.",
 fileName)
        Else
            Console.WriteLine(vbCrLf & "{0} found on {1}.",
 _
                fileName, diskLetters(index))
        End If
    End Sub

    ' Search for stateInfo.fileName.
    Sub FindCallback(state As Object)
        Dim stateInfo As State = DirectCast(state,
 State)

        ' Signal if the file is found.
        If File.Exists(stateInfo.fileName) Then
            stateInfo.autoEvent.Set()
        End If
    End Sub

End Class
using System;
using System.IO;
using System.Threading;

class Test
{
    static void Main()
    {
        Search search = new Search();
        search.FindFile("SomeFile.dat");
    }
}

class Search
{
    // Maintain state information to pass to FindCallback.
    class State
    {
        public AutoResetEvent autoEvent;
        public string         fileName;

        public State(AutoResetEvent autoEvent, string
 fileName)
        {
            this.autoEvent    = autoEvent;
            this.fileName     = fileName;
        }
    }

    AutoResetEvent[] autoEvents;
    String[] diskLetters;

    public Search()
    {
        // Retrieve an array of disk letters.
        diskLetters = Environment.GetLogicalDrives();

        autoEvents = new AutoResetEvent[diskLetters.Length];
        for(int i = 0; i < diskLetters.Length;
 i++)
        {
            autoEvents[i] = new AutoResetEvent(false);
        }
    }

    // Search for fileName in the root directory of all disks.
    public void FindFile(string
 fileName)
    {
        for(int i = 0; i < diskLetters.Length;
 i++)
        {
            Console.WriteLine("Searching for {0} on {1}."
,
                fileName, diskLetters[i]);
            ThreadPool.QueueUserWorkItem(
                new WaitCallback(FindCallback), 
                new State(autoEvents[i], 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]);
        }
    }

    // Search for stateInfo.fileName.
    void FindCallback(object state)
    {
        State stateInfo = (State)state;

        // Signal if the file is found.
        if(File.Exists(stateInfo.fileName))
        {
            stateInfo.autoEvent.Set();
        }
    }
}
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" );
}

import System.*;
import System.IO.*;
import System.Threading.*;

class Test
{
    public static void main(String[]
 args)
    {
        Search search = new Search();
        search.FindFile("SomeFile.dat");
    } //main
} //Test

class Search
{
    // Maintain state information to pass to FindCallback.
    class State
    {
        public AutoResetEvent autoEvent;
        public String fileName;

        public State(AutoResetEvent autoEvent, String fileName)
        {
            this.autoEvent = autoEvent;
            this.fileName = fileName;
        } //State
    } //State

    private AutoResetEvent autoEvents[];
    private String diskLetters[];

    public Search()
    {
        // Retrieve an array of disk letters.
        diskLetters = Environment.GetLogicalDrives();
        autoEvents = new AutoResetEvent[diskLetters.length];
        for (int i = 0; i < diskLetters.length;
 i++) {
            autoEvents[i] = new AutoResetEvent(false);
        }
    } //Search

    // Search for fileName in the root directory of all disks.
    public void FindFile(String fileName)
    {
        for (int i = 0; i < diskLetters.length;
 i++) {
            Console.WriteLine("Searching for {0} on {1}."
, fileName,
                diskLetters.get_Item(i));
            ThreadPool.QueueUserWorkItem(new WaitCallback(FindCallback),
 
                new State(autoEvents[i], 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.get_Item(index));
        }
    } //FindFile

    // Search for stateInfo.fileName.
    void FindCallback(Object state)
    {
        State stateInfo = ((State)(state));

        // Signal if the file is found.
        if (File.Exists(stateInfo.fileName)) {
            stateInfo.autoEvent.Set();
        }
    } //FindCallback
} //Search
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

WaitHandle.WaitTimeout フィールドのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



WaitHandle.WaitTimeout フィールドのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2024 Microsoft.All rights reserved.

©2024 GRAS Group, Inc.RSS