SerialPort.ReadTimeout Propiedad

Definición

Obtiene o establece el número de milisegundos que transcurren antes de que se agote el tiempo de espera si una operación de lectura no finaliza.

public int ReadTimeout { get; set; }
[System.ComponentModel.Browsable(true)]
public int ReadTimeout { get; set; }

Valor de propiedad

El número de milisegundos que transcurren antes de que se agote el tiempo de espera si una operación de lectura no finaliza.

Atributos

Excepciones

El puerto tiene un estado no válido.

o bien

Se ha producido un error al intentar establecer el estado del puerto subyacente. Por ejemplo, los parámetros que se han pasado desde este objeto SerialPort no eran válidos.

El valor del tiempo de espera de lectura es menor que cero y distinto de InfiniteTimeout.

Ejemplos

En el ejemplo de código siguiente se muestra el uso de la SerialPort clase para permitir que dos usuarios chateen desde dos equipos independientes conectados por un cable de módem nulo. En este ejemplo, se solicita a los usuarios la configuración del puerto y un nombre de usuario antes de chatear. Este ejemplo de código forma parte de un ejemplo de código más grande proporcionado para la SerialPort clase .

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) { }
    }
}

Comentarios

El valor de tiempo de espera de lectura se estableció originalmente en 500 milisegundos en la API de comunicaciones de Win32. Esta propiedad permite establecer este valor. El tiempo de espera se puede establecer en cualquier valor mayor que cero o en InfiniteTimeout, en cuyo caso no se produce ningún tiempo de espera. InfiniteTimeout es el valor predeterminado.

Nota

Los usuarios de la estructura no administrada COMMTIMEOUTS podrían esperar establecer el valor de tiempo de espera en cero para suprimir los tiempos de espera. Sin embargo, para suprimir los tiempos de espera con la ReadTimeout propiedad , debe especificar InfiniteTimeout.

Esta propiedad no afecta al BeginRead método de la secuencia devuelta por la BaseStream propiedad .

Se aplica a

Producto Versiones
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1