SerialPort.ReadTimeout 속성
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
읽기 작업을 마쳐야 하는 제한 시간(밀리초)을 가져오거나 설정합니다.
public:
property int ReadTimeout { int get(); void set(int value); };
public int ReadTimeout { get; set; }
[System.ComponentModel.Browsable(true)]
public int ReadTimeout { get; set; }
member this.ReadTimeout : int with get, set
[<System.ComponentModel.Browsable(true)>]
member this.ReadTimeout : int with get, set
Public Property ReadTimeout As Integer
속성 값
읽기 작업을 마쳐야 하는 제한 시간(밀리초)입니다.
- 특성
예외
읽기 제한 시간 값이 0보다 작고 InfiniteTimeout과 같지 않은 경우
예제
다음 코드 예제에서는 클래스를 SerialPort 사용하여 두 사용자가 null 모뎀 케이블로 연결된 두 대의 별도 컴퓨터에서 채팅할 수 있도록 하는 방법을 보여 줍니다. 이 예제에서는 채팅하기 전에 사용자에게 포트 설정 및 사용자 이름을 묻는 메시지가 표시됩니다. 이 코드 예제는 일부에 대해 제공 된 더 큰 코드 예제는 SerialPort 클래스입니다.
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
설명
읽기 시간 제한 값은 원래 Win32 Communications API에서 500밀리초로 설정되었습니다. 이 속성을 사용하면 이 값을 설정할 수 있습니다. 시간 제한은 0보다 큰 값으로 설정하거나 로 InfiniteTimeout설정할 수 있습니다. 이 경우 시간 초과가 발생하지 않습니다. 기본값은 InfiniteTimeout입니다.
참고
관리 COMMTIMEOUTS
되지 않는 구조의 사용자는 시간 제한 값을 0으로 설정하여 시간 초과를 표시하지 않을 수 있습니다. 그러나 속성을 사용하여 시간 초과를 ReadTimeout 표시하지 않려면 를 지정 InfiniteTimeout해야 합니다.
이 속성은 속성에서 BeginRead 반환하는 스트림의 메서드에 BaseStream 영향을 주지 않습니다.
적용 대상
.NET