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.