SerialPort.WriteTimeout Właściwość

Definicja

Pobiera lub ustawia liczbę milisekund przed przekroczeniem limitu czasu, gdy operacja zapisu nie zostanie zakończona.

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

Wartość właściwości

Liczba milisekund przed przekroczeniem limitu czasu. Wartość domyślna to InfiniteTimeout.

Atrybuty

Wyjątki

Port w nieprawidłowym stanie.

-lub-

Nie można ustawić stanu portu bazowego. Na przykład parametry przekazane z tego SerialPort obiektu były nieprawidłowe.

Wartość WriteTimeout jest mniejsza niż zero i nie równa się InfiniteTimeout.

Przykłady

W poniższym przykładzie kodu pokazano użycie SerialPort klasy , aby umożliwić dwóch użytkownikom czat z dwóch oddzielnych komputerów połączonych za pomocą kabla modemu o wartości null. W tym przykładzie użytkownicy są monitowani, aby ustawić port i nazwę użytkownika przed rozpoczęciem rozmowy. Ten przykład kodu jest częścią większego przykładu kodu udostępnionego SerialPort dla klasy.

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

Uwagi

Wartość limitu czasu zapisu została pierwotnie ustawiona na 500 milisekund w interfejsie API komunikacji Win32. Ta właściwość umożliwia ustawienie tej wartości. Limit czasu można ustawić na dowolną wartość większą niż zero lub ustawioną na InfiniteTimeoutwartość , w takim przypadku nie wystąpi limit czasu. Wartość domyślna to InfiniteTimeout.

Uwaga

Użytkownicy struktury niezarządzanej COMMTIMEOUTS mogą oczekiwać ustawienia wartości limitu czasu na zero, aby pominąć limity czasu. Aby pominąć limity czasu dla WriteTimeout właściwości , należy jednak określić InfiniteTimeoutwartość .

Ta właściwość nie ma wpływu na BeginWrite metodę strumienia zwróconego BaseStream przez właściwość.

Dotyczy