데이터를 수신 대기하는 방법이 있습니다. networkstream.read 메서드가 동기식이기 때문에 별도의 스레드에서 실행해야합니다. 그래서 별도의 스레드에서 실행하는 방법은 다음과 같습니다 내가 스레드를 종료 할 수 있어요멈춤 스레드가 작동하지 않습니다.
void someMethod(param1, param2....)
{
try{
while(stream.read(data...) != 0) // code waits here until data is received
{
// do stufff
}
}catch{}//
}
있는 유일한 방법은 스트림 및 실행됩니다 catch 블록을 닫는 것입니다. 때로는 동일한 스트림에서 다른 방법으로 데이터를 듣기 시작해야합니다. 그래서 스레드를 t = new Thread (새로운 threadstart (somemethod ......))로 작성한 다음 t.start (someObject)를 수행하고 나중에 t.abort()를 수행 할 때 해당 메소드가 여전히 수신 대기하게됩니다 .? 데이터는 어떻게 또한
을 종료 할 수 있습니다 I는 다음과 같은 전역 변수를 만드는 시도했다 :.
bool someBoolean = false;
void someMethod(param1, param2....)
{
try{
while(someBoolean ==false && stream.read(data...) != 0) // code waits here until data is received
{
// do stufff
}
}catch{}//
}
그때 나는 그것을 않습니다 어떤 이유로 메소드가 실행이 중지됩니다 true로 someBoolean 변경된 것을 생각 왜 someBoolean은 한 번에 두 개의 변수가됩니다. 주 스레드에서 값을 변경하면 두 번째 스레드에 영향을 미치지 않으므로 ...
스트림에서 버퍼 방식으로 읽어야한다는 것은 잠시 동안 작은 양의 데이터를 읽음을 의미합니다. 읽고 쓰는 방법과 스레드가 작동하는 방식에 대한 실제 코드를 보여줍니다. –
'stream.Read'는 데이터가 사용 가능할 때까지 차단되므로 부울을 설정하면 그 시점에서 도움이되지 않습니다. – dlev