SerialPort.WriteTimeout Свойство

Определение

Получает или задает срок ожидания в миллисекундах для завершения операции записи.Gets or sets the number of milliseconds before a time-out occurs when a write operation does not finish.

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

Значение свойства

Количество миллисекунд до истечения времени ожидания.The number of milliseconds before a time-out occurs. Значение по умолчанию — InfiniteTimeout.The default is InfiniteTimeout.

Атрибуты

Исключения

Порт находится в недействительном состоянии.The port is in an invalid state.

- или --or- Попытка задать состояние базового порта завершилась неудачей.An attempt to set the state of the underlying port failed. Например, вследствие недопустимости переданных этим объектом SerialPort параметров.For example, the parameters passed from this SerialPort object were invalid.

Значение WriteTimeout меньше нуля и отлично от InfiniteTimeout.The WriteTimeout value is less than zero and not equal to InfiniteTimeout.

Примеры

В следующем примере кода показано использование SerialPort класса, чтобы два пользователя могли общаться с двух отдельных компьютеров, Соединенных нуль-модемным кабелем.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. Этот пример кода является частью более крупного примера кода, SerialPort предоставленного для класса.This code example is part of a larger code example provided for the SerialPort class.

public:
    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;

        _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();
    }

    static void Read()
    {
        while (_continue)
        {
            try
            {
                String^ message = _serialPort->ReadLine();
                Console::WriteLine(message);
            }
            catch (TimeoutException ^) { }
        }
    }
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

Комментарии

Значение времени ожидания записи было изначально установлено в 500 миллисекунд в API обмена данными Win32.The write time-out value was originally set at 500 milliseconds in the Win32 Communications API. Это свойство позволяет задать это значение.This property allows you to set this value. Для параметра время ожидания можно задать любое значение больше нуля или значение InfiniteTimeout, в этом случае время ожидания не истекает.The time-out can be set to any value greater than zero, or set to InfiniteTimeout, in which case no time-out occurs. Тип InfiniteTimeout используется по умолчанию.InfiniteTimeout is the default.

Примечание

Пользователи неуправляемой COMMTIMEOUTS структуры могут ожидать, что значение времени ожидания будет равно нулю, чтобы подавить время ожидания.Users of the unmanaged COMMTIMEOUTS structure might expect to set the time-out value to zero to suppress time-outs. Однако для подавления истечения WriteTimeout времени ожидания со свойством необходимо указать InfiniteTimeout.To suppress time-outs with the WriteTimeout property, however, you must specify InfiniteTimeout.

Это свойство не влияет BeginWrite на метод потока, возвращаемого BaseStream свойством.This property does not affect the BeginWrite method of the stream returned by the BaseStream property.

Применяется к