SerialPort.ReadTimeout Egenskap
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Hämtar eller anger antalet millisekunder innan en timeout inträffar när en läsåtgärd inte slutförs.
public:
property int ReadTimeout { int get(); void set(int value); };
[System.ComponentModel.Browsable(true)]
public int ReadTimeout { get; set; }
[<System.ComponentModel.Browsable(true)>]
member this.ReadTimeout : int with get, set
Public Property ReadTimeout As Integer
Egenskapsvärde
Antalet millisekunder innan tidsgränsen uppnås när en läsåtgärd inte slutförs.
- Attribut
Undantag
Porten är i ett ogiltigt tillstånd.
-eller-
Ett försök att ange tillståndet för den underliggande porten misslyckades. Parametrarna som skickades från det här SerialPort objektet var till exempel ogiltiga.
Tidsgränsvärdet för läsning är mindre än noll och inte lika med InfiniteTimeout.
Exempel
Följande kodexempel visar hur klassen används SerialPort för att tillåta två användare att chatta från två separata datorer som är anslutna med en null-modemkabel. I det här exemplet uppmanas användarna att ange portinställningarna och ett användarnamn innan de chattar. Det här kodexemplet är en del av ett större kodexempel som tillhandahålls SerialPort för klassen.
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
Kommentarer
Tidsgränsvärdet för läsning angavs ursprungligen till 500 millisekunder i Win32 Communications API. Med den här egenskapen kan du ange det här värdet. Tidsgränsen kan ställas in på valfritt värde som är större än noll eller anges till InfiniteTimeout, i vilket fall ingen timeout inträffar. InfiniteTimeout används som standard.
Note
Användare av den ohanterade COMMTIMEOUTS strukturen kan förvänta sig att ange timeout-värdet till noll för att förhindra tidsgränser. Om du vill utelämna tidsgränser med ReadTimeout egenskapen måste du dock ange InfiniteTimeout.
Den här egenskapen påverkar inte metoden för BeginRead dataströmmen som returneras av BaseStream egenskapen.