나는 IP 주소의 긴리스트를 ping하는 프로그램을 만들고있다. 현재 핑 (ping) 할 데이터베이스가 약 250 개이며 모든 것을 처리하는 데 오랜 시간이 걸립니다. 프로그램은 또한 상태가 변경 될 때 전자 메일 알림을 전송합니다 (실패한 것에서부터 성공한 것 또는 그 반대의 경우). 최악의 경우 각 핑에 2 초가 걸립니다 (실패 할 경우). 따라서 일반적으로 전체 프로그램을 돌아가려면 약 8 분이 걸립니다.
가능하다면 이메일 알림을 실시간에 더 가깝게하고 싶습니다. ping 함수를 비동기 적으로 호출하면 이전에 발생한 응답을 기다리지 않고 더 빠르게 호출 할 수 있습니까? 나는 어떤 종류의 비동기 프로그래밍에 익숙하지 않으며, 이것이 이것을 사용하기에 적절한 상황인지 확신 할 수 없다.
그렇다면 이것으로 시작하기위한 리소스를 향한 모든 포인터가 많이 감사하게 될 것입니다!
네트워크는 1 초 미만의 250 ping 전송을 지원해야합니다. 비동기 IO를 사용하여 모든 핑을 한 번에 시작해야합니다.Task.WaitAll
결과를 수집합니다. 그렇게하면 2 초 이내에 완료됩니다.
250 개의 작업 항목으로 비동기 IO를 사용하는 솔루션을 강력하게 선호합니다. 원하는 경우 스레드를 사용할 수 있습니다.
비동기 메소드 확인Ping
수업에서 제공합니다. 에 대한 학습async/await
과Task
. 이것은 그들에게 좋은 유스 케이스이다.