Jak „anulować” UdpClient :: BeginReceive?

Mam wątek, który znajduje się wokół oczekiwania na komunikaty UDP z wielu interfejsówUdpClient::BeginReceive i wywołanie zwrotne, które wywołujeUdpClient::EndReceive odebrać dane i przekazać je dalej.

Jeśli po 5 sekundach nic nie dostanę, wracam z funkcji, która dzwoniUdpClient::BeginReceive aby proces mógł zostać anulowany i wydać kolejną transmisję, która spowodowałaby wysłanie przez klientów zewnętrznych odpowiedzi UDP. Jeśli nie anulujemy, dzwonię doUdpClient::BeginReceive funkcja ponownie, aby sprawdzić nowe dane.

Jeśli klient nie otrzymał żadnych danych na czas, czy istnieje sposób na anulowanie tego asynchronicznego żądania bez wywołaniaEndReceive który blokuje się w nieskończoność? Mam wrażenie, że pozostawienie uruchomionych setek asynchronicznych wyzwalaczy byłoby złym pomysłem.

questionAnswers(2)

yourAnswerToTheQuestion