SerialPort.WriteTimeout 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 escritura no finaliza.

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

Valor de propiedad

Número de milisegundos que transcurren antes de que se agote el tiempo de espera. De manera predeterminada, es InfiniteTimeout.

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 de WriteTimeout 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 escritura 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

Es posible que los usuarios de la estructura no administrada COMMTIMEOUTS establezcan el valor de tiempo de espera en cero para suprimir los tiempos de espera. Sin embargo, para suprimir los tiempos de espera con la WriteTimeout propiedad , debe especificar InfiniteTimeout.

Esta propiedad no afecta al BeginWrite 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