SerialPort::WriteTimeout Property


The .NET API Reference documentation has a new home. Visit the .NET API Browser on to see the new experience.

Gets or sets the number of milliseconds before a time-out occurs when a write operation does not finish.

Namespace:   System.IO.Ports
Assembly:  System (in System.dll)

property int WriteTimeout {
	int get();
	void set(int value);

Property Value

Type: System::Int32

The number of milliseconds before a time-out occurs. The default is InfiniteTimeout.

Exception Condition

The port is in an invalid state.

- or -

An attempt to set the state of the underlying port failed. For example, the parameters passed from this SerialPort object were invalid.


The WriteTimeout value is less than zero and not equal to InfiniteTimeout.

The write time-out value was originally set at 500 milliseconds in the Win32 Communications API. This property allows you to set this value. The time-out can be set to any value greater than zero, or set to InfiniteTimeout, in which case no time-out occurs. InfiniteTimeout is the default.


Users of the unmanaged COMMTIMEOUTS structure might expect to set the time-out value to zero to suppress time-outs. To suppress time-outs with the WriteTimeout property, however, you must specify InfiniteTimeout.

This property does not affect the BeginWrite method of the stream returned by the BaseStream property.

The following code example demonstrates the use of the SerialPort class to allow two users to chat from two separate computers connected by a null modem cable. In this example, the users are prompted for the port settings and a username before chatting. This code example is part of a larger code example provided for the SerialPort class.

    static void Main()
        String^ name;
        String^ message;
        StringComparer^ stringComparer = StringComparer::OrdinalIgnoreCase;
        Thread^ readThread = gcnew Thread(gcnew ThreadStart(PortChat::Read));

        // Create a new SerialPort object with default settings.
        _serialPort = gcnew 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;

        _continue = true;

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

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

        while (_continue)
            message = Console::ReadLine();

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


    static void Read()
        while (_continue)
                String^ message = _serialPort->ReadLine();
            catch (TimeoutException ^) { }

.NET Framework
Available since 2.0
Return to top