SerialPort.ReadTimeout Eigenschap

Definitie

Hiermee wordt het aantal milliseconden opgehaald of ingesteld voordat er een time-out optreedt wanneer een leesbewerking niet is voltooid.

public:
 property int ReadTimeout { int get(); void set(int value); };
[System.ComponentModel.Browsable(true)]
public int ReadTimeout { get; set; }
[<System.ComponentModel.Browsable(true)>]
member this.ReadTimeout : int with get, set
Public Property ReadTimeout As Integer

Waarde van eigenschap

Het aantal milliseconden voordat er een time-out optreedt wanneer een leesbewerking niet is voltooid.

Kenmerken

Uitzonderingen

De poort heeft een ongeldige status.

– of –

Een poging om de status van de onderliggende poort in te stellen, is mislukt. De parameters die van dit SerialPort object zijn doorgegeven, zijn bijvoorbeeld ongeldig.

De time-outwaarde voor lezen is kleiner dan nul en niet gelijk aan InfiniteTimeout.

Voorbeelden

Het volgende codevoorbeeld laat het gebruik van de SerialPort klasse zien, zodat twee gebruikers kunnen chatten vanaf twee afzonderlijke computers die zijn verbonden met een null-modemkabel. In dit voorbeeld worden de gebruikers gevraagd om de poortinstellingen en een gebruikersnaam voordat ze chatten. Dit codevoorbeeld maakt deel uit van een groter codevoorbeeld dat is opgegeven voor de SerialPort klasse.

public static void Main()
{
    string name;
    string message;
    StringComparer stringComparer = StringComparer.OrdinalIgnoreCase;
    Thread readThread = new Thread(Read);

    // Create a new SerialPort object with default settings.
    _serialPort = new SerialPort();

    // Allow the user to set the appropriate properties.
    _serialPort.PortName = SetPortName(_serialPort.PortName);
    _serialPort.BaudRate = SetPortBaudRate(_serialPort.BaudRate);
    _serialPort.Parity = SetPortParity(_serialPort.Parity);
    _serialPort.DataBits = SetPortDataBits(_serialPort.DataBits);
    _serialPort.StopBits = SetPortStopBits(_serialPort.StopBits);
    _serialPort.Handshake = SetPortHandshake(_serialPort.Handshake);

    // Set the read/write timeouts
    _serialPort.ReadTimeout = 500;
    _serialPort.WriteTimeout = 500;

    _serialPort.Open();
    _continue = true;
    readThread.Start();

    Console.Write("Name: ");
    name = Console.ReadLine();

    Console.WriteLine("Type QUIT to exit");

    while (_continue)
    {
        message = Console.ReadLine();

        if (stringComparer.Equals("quit", message))
        {
            _continue = false;
        }
        else
        {
            _serialPort.WriteLine(
                String.Format("<{0}>: {1}", name, message));
        }
    }

    readThread.Join();
    _serialPort.Close();
}

public static void Read()
{
    while (_continue)
    {
        try
        {
            string message = _serialPort.ReadLine();
            Console.WriteLine(message);
        }
        catch (TimeoutException) { }
    }
}
Public Shared Sub Main()
    Dim name As String
    Dim message As String
    Dim stringComparer__1 As StringComparer = StringComparer.OrdinalIgnoreCase
    Dim readThread As New Thread(AddressOf Read)

    ' Create a new SerialPort object with default settings.
    _serialPort = New SerialPort()

    ' Allow the user to set the appropriate properties.
    _serialPort.PortName = SetPortName(_serialPort.PortName)
    _serialPort.BaudRate = SetPortBaudRate(_serialPort.BaudRate)
    _serialPort.Parity = SetPortParity(_serialPort.Parity)
    _serialPort.DataBits = SetPortDataBits(_serialPort.DataBits)
    _serialPort.StopBits = SetPortStopBits(_serialPort.StopBits)
    _serialPort.Handshake = SetPortHandshake(_serialPort.Handshake)

    ' Set the read/write timeouts
    _serialPort.ReadTimeout = 500
    _serialPort.WriteTimeout = 500

    _serialPort.Open()
    _continue = True
    readThread.Start()

    Console.Write("Name: ")
    name = Console.ReadLine()

    Console.WriteLine("Type QUIT to exit")

    While _continue
        message = Console.ReadLine()

        If stringComparer__1.Equals("quit", message) Then
            _continue = False
        Else
            _serialPort.WriteLine([String].Format("<{0}>: {1}", name, message))
        End If
    End While

    readThread.Join()
    _serialPort.Close()
End Sub

Public Shared Sub Read()
    While _continue
        Try
            Dim message As String = _serialPort.ReadLine()
            Console.WriteLine(message)
        Catch generatedExceptionName As TimeoutException
        End Try
    End While
End Sub

Opmerkingen

De time-outwaarde voor lezen is oorspronkelijk ingesteld op 500 milliseconden in de Win32 Communications-API. Met deze eigenschap kunt u deze waarde instellen. De time-out kan worden ingesteld op elke waarde die groter is dan nul, of ingesteld op InfiniteTimeout, in welk geval er geen time-out optreedt. InfiniteTimeout is de standaardwaarde.

Note

Gebruikers van de niet-beheerde COMMTIMEOUTS structuur verwachten mogelijk dat de time-outwaarde op nul wordt ingesteld om time-outs te onderdrukken. Als u time-outs met de ReadTimeout eigenschap wilt onderdrukken, moet u echter opgeven InfiniteTimeout.

Deze eigenschap heeft geen invloed op de BeginRead methode van de stream die door de BaseStream eigenschap wordt geretourneerd.

Van toepassing op