Auf Englisch lesen

Teilen über


SerialPort.WriteTimeout Eigenschaft

Definition

Ruft die Anzahl der Millisekunden ab, bevor ein Timeout auftritt, wenn ein Schreibvorgang nicht beendet wird, oder legt diese fest.

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

Eigenschaftswert

Die Anzahl von Millisekunden, bevor ein Timeout auftritt. Der Standardwert ist InfiniteTimeout.

Attribute

Ausnahmen

Der Anschluss befindet sich in einem ungültigen Zustand.

- oder -

Fehler beim Versuch, den Zustand des zugrunde liegenden Anschlusses festzulegen. Beispielsweise waren die von diesem SerialPort-Objekt übergebenen Parameter ungültig.

Der WriteTimeout-Wert ist kleiner als 0 (null) und ungleich InfiniteTimeout.

Beispiele

Das folgende Codebeispiel veranschaulicht die Verwendung der SerialPort -Klasse, um zwei Benutzern das Chatten von zwei separaten Computern zu ermöglichen, die über ein Nullmodemkabel verbunden sind. In diesem Beispiel werden die Benutzer vor dem Chatten zur Eingabe der Porteinstellungen und eines Benutzernamens aufgefordert. Dieses Codebeispiel ist Teil eines größeren Codebeispiels, das für die SerialPort -Klasse bereitgestellt wird.

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

Hinweise

Der Wert für das Schreibtimeout wurde ursprünglich in der Win32-Kommunikations-API auf 500 Millisekunden festgelegt. Mit dieser Eigenschaft können Sie diesen Wert festlegen. Das Timeout kann auf einen beliebigen Wert größer als 0 festgelegt oder auf InfiniteTimeoutfestgelegt werden. In diesem Fall tritt kein Timeout auf. InfiniteTimeout ist die Standardoption.

Hinweis

Benutzer der nicht verwalteten COMMTIMEOUTS Struktur können erwarten, dass sie den Timeoutwert auf 0 festlegen, um Timeouts zu unterdrücken. Um Timeouts mit der WriteTimeout -Eigenschaft zu unterdrücken, müssen Sie jedoch angeben InfiniteTimeout.

Diese Eigenschaft wirkt sich nicht auf die BeginWrite Methode des von der BaseStream -Eigenschaft zurückgegebenen Streams aus.

Gilt für:

Produkt Versionen
.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