웹 요청이있어서 streamreader로 정보를 읽습니다. 15 초 후이 유출입선에서 멈추고 싶습니다. 때로는 독서 과정에 시간이 더 걸리기도하지만 때로는 잘 진행되기도합니다. 독서 과정에 15 초 이상 걸리는 경우 어떻게 멈출 수 있습니까? 나는 모든 아이디어를 열었습니다.몇 초 후 C#으로 스트림 리더를 중지합니다. 이것이 가능한가?
2
A
답변
1
System.Threading.Timer를 사용하고 15 초 동안 on tick 이벤트를 설정하십시오. 가장 깨끗한 것은 아니지만 효과가있을 것입니다. 아니면 스톱워치
--stopwatch 옵션
Stopwatch sw = new Stopwatch();
sw.Start();
while (raeder.Read() && sw.ElapsedMilliseconds < 15000)
{
}
--Timer 옵션은
Timer t = new Timer();
t.Interval = 15000;
t.Elapsed += new ElapsedEventHandler(t_Elapsed);
t.Start();
read = true;
while (raeder.Read() && read)
{
}
}
private bool read;
void t_Elapsed(object sender, ElapsedEventArgs e)
{
read = false;
}
0
당신은 다른 스레드에서 작업을 실행해야하고, 메인 스레드에서 모니터링 할 것은 실행 여부 15 초 초과 :
string result;
Action asyncAction =() =>
{
//do stuff
Thread.Sleep(10000); // some long running operation
result = "I'm finished"; // put the result there
};
// have some var that holds the value
bool done = false;
// invoke the action on another thread, and when done: set done to true
asyncAction.BeginInvoke((res)=>done=true, null);
int msProceeded = 0;
while(!done)
{
Thread.Sleep(100); // do nothing
msProceeded += 100;
if (msProceeded > 5000) break; // when we proceed 5 secs break out of this loop
}
// done holds the status, and result holds the result
if(!done)
{
//aborted
}
else
{
//finished
Console.WriteLine(result); // prints I'm finished, if it's executed fast enough
}
2
"웹 요청"이라고 말하면서 hat 스트림 리더는 HttpWebRequest
인스턴스에서 얻은 System.IO.Stream
을 httpWebRequest.GetResponse().GetResponseStream()
으로 호출하여 래핑합니다.
그런 경우라면 HttpWebRequest.ReadWriteTimeout
을 살펴 봐야합니다.
관련 문제
- 1. 몇 초 후 알림 지우기
- 2. 몇 초 후 플래시 removeChild
- 3. getImageResource() Android. 이것이 가능한가?
- 4. C# 스트림 리더를 사용하여 수신
- 5. 빙지도 오프라인 개발? 이것이 가능한가?
- 6. StyleCop이 빌드를 취소해야합니다. 이것이 가능한가?
- 7. 몇 초 후 앱이 다운 됨
- 8. 여러 모델이있는 Three20 TTTableViewController? 이것이 가능한가?
- 9. 밀리 초 동안 프로세스 실행을 중지합니다
- 10. mysql은 일시적으로 값을 조정합니다. 이것이 가능한가?
- 11. USB pendrive에서 실행중인 버그 추적기. 이것이 가능한가?
- 12. DataTextField에서 두 필드를 결합합니다. 이것이 가능한가?
- 13. 자동으로 몇 초
- 14. PHP - 몇 초 남았습니까?
- 15. SQL Server가 20 초 동안 처리를 중지합니다.
- 16. 는 PHP 스크립트에 자바 스크립트의 출력을 주입해야합니다. 이것이 가능한가?
- 17. JSF가 dataTable 및 openpopup 창을 제출 하시겠습니까? 이것이 가능한가?
- 18. 몇 초 동안 이미지 표시
- 19. weborb 콘솔에서 참조 된 어셈블리를 숨 깁니다. 이것이 가능한가?
- 20. SSRS의 서브repot 열을 사용하여 테이블을 정렬합니다. 이것이 가능한가?
- 21. 실버 라이트의 IOC 컨테이너를 사용하여 동적으로 어셈블리를로드합니다. 이것이 가능한가?
- 22. iPhone : 네비게이션 컨트롤러 (TableViewController 포함)를 스택에 푸시하십시오. 이것이 가능한가?
- 23. Castle-Windsor 컨트롤러로 "전통적인"컨트롤러를 믹스하십시오. 이것이 가능한가?
- 24. 같은 데이터베이스 테이블에 2 개의 Hibernate 엔티티. 이것이 가능한가?
- 25. CSS로 [marquee] 태그를 비활성화하는 방법은 무엇입니까? 이것이 가능한가?
- 26. Business Objects Web Intelligence 스타일의 Winform 응용 프로그램보고. 이것이 가능한가?
- 27. 하루 중 몇 초 동안의 .NET 상수입니까?
- 28. 스플래시 이미지가 몇 초 비어 있음
- 29. ie6에서 몇 초 후에 플래시가 꺼집니다.
- 30. 몇 시간에서 몇 초, 몇 초에서 몇 시간으로 변환하는 쉬운 기능이 있습니까?
명확화 : 15 초 동안 더 많은 데이터를 기다렸거나 15 초 동안 계속 읽은 후 중지하겠습니까? –
15 초 후에 더 많은 데이터를 기다리고 있습니다. –