인터넷에서 뭔가를 다운로드하기 위해 스레드를 사용하고 있습니다. 내 스레드 메서드 내부에 루프가 없습니다. StreamReader.ReadToEnd()
메서드를 사용하고 있습니다. 따라서 내 스레드에서 큰 것을 다운로드 할 때이 스레드를 중지하고 싶습니다. thread.Abort() 메소드가 없어도 좋다. GC 스레드에 정리를 제공하거나 종료 할 수 있습니까?C#의 스레드를 즉시 죽이는 방법
3
A
답변
12
ReadToEnd
을 사용하지 말고 루프를 만들고 X 문자를 한 번에 읽거나 한 번에 한 줄씩 ReadLine
으로 읽습니다. 루프 내에서 AutoResetEvent
이 (.WaitOne(0)
을 사용하여) 설정되었는지 확인한 다음 루프를 종료하십시오.
다운로드를 중지하려면 다른 스레드에서 재설정 이벤트 (Set
사용)를 설정하십시오.
2
BaseStream BeginRead() 비동기 메소드를 사용할 수 있습니다. 전용 스레드 (1MB의 커밋 된 메모리를 사용함)를 생성하는 대신이 방법을 사용하는 것이 좋습니다. 비동기 메서드는 I/O 완료 포트를 사용하므로 더 효율적입니다.
new StreamReader(aStream).BaseStream.BeginRead()
는 여기에 몇 가지 추가 정보를 http://msdn.microsoft.com/en-us/library/system.io.stream.beginread.aspx
비동기 읽기를 정지에 관련된 스레드입니다.
0
은 무엇 조지 Duckett 말했다하지만 당신은 스레드/비동기 작업을 시작합니다 닷넷 4 Task
클래스를 사용하고 CancellationToken
에 전달하고 루프 체크하면 IsCancellationRequested
= 사실
관련 문제
- 1. 이전 질문 : C에서 즉시 스레드를 죽이는 방법 #
- 2. C#에서 스레드를 즉시 죽이는 방법은 무엇입니까?
- 3. C# 스레드를 죽이는 방법?
- 4. 스레드를 죽이는 방법 + .net + System.AddIn
- 5. 자바의 다른 스레드에서 즉시 스레드를 죽이는 방법은 무엇입니까?
- 6. 메인에서 스레드를 죽이는 것
- 7. SIGSEGV를 일으키는 스레드를 죽이는
- 8. 스레드를 죽이는 것
- 9. 소켓이있는 별도의 스레드를 죽이는 경우
- 10. C# 차단 된 스레드를 죽이는 방법?
- 11. 스레드 배열에서 특정 스레드를 죽이는 방법
- 12. 새로운 활동에서 실행중인 스레드를 죽이는 방법
- 13. 즉시 스레드를 중지하십시오.
- 14. 인터럽트 불가능한 스레드를 죽이는 방법은 무엇입니까?
- 15. 개체를 삭제하는 동안 스레드를 죽이는 중
- 16. Java에서 지정된 시간 제한 후 스레드를 죽이는
- 17. Silverlight에서 실행중인 모든 스레드를 죽이는 방법은 무엇입니까?
- 18. 안드로이드/자바에서 * 응답하지 않는 스레드를 죽이는 것
- 19. 왜 파이썬이 스레드를 죽이는 것을 지원하지 않습니까?
- 20. gdb가 모든 스레드를 즉시 중지합니까?
- 21. 대기 pthread를 죽이는 방법
- 22. Objective-C의 백그라운드 스레드를 취소하십시오.
- 23. 자이 썬의 하위 스레드에서 주 스레드를 죽이는 방법
- 24. 프로세스를 죽이는 방법?
- 25. ThreadPool이 새 스레드를 즉시 시작하지 않습니다.
- 26. activemq에서 소비자를 죽이는 방법
- 27. WiX에서 프로세스를 죽이는 방법
- 28. 안드로이드에서 타이머를 죽이는 방법?
- 29. vb.net에서 프로세스를 죽이는 방법
- 30. ajax 요청을 죽이는 방법
일에 있었다. 끝까지 읽는 것은 정말 안좋은 일입니다. 중단하지 마시고 그렇지 않으면 시작에 할당 할 수없는 많은 메모리를 사용하게 될 것입니다 (64 또는 128k 버퍼로 충분할 수도 있음). – TomTom
StreamReader에서는 X 바이트를 읽지 않습니다. 그 생각을 ReadLine()으로 바꾸십시오. –