Я новичок в андроиде. Я реализовал пробивку отверстий в С#, и я пытаюсь реализовать ту же логику в Android.
Некоторые классы из решения .NET, которые я реализовал, новые классы в Android, такие как TimeSpan, хотя есть некоторые классы, которые мне нужно реализовать, и я получил стек.
- Попытка получить класс в Android, который ведет себя как CancellationTokenSource в .NET.
- Есть некоторая логика, которая отлично работает на С#, но я не знаю, как реализовать ее на андроиде.
КОД:
private static Boolean rec_and_wait(TimeSpan interval)
{
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
try
{
CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
byte[] data = new byte[1024];
IAsyncResult ar = socket.BeginReceive(data, 0, data.Length, SocketFlags.None, null, null);
int res = WaitHandle.WaitAny(new WaitHandle[] { ar.AsyncWaitHandle, _cancellationTokenSource.Token.WaitHandle }, interval.Add(TimeSpan.FromSeconds(10))); // allow extra 10 seconds for network delay
switch (res)
{
case 0: // response
return true;
case WaitHandle.WaitTimeout: // time out
case 1: //cancelled
default: // should not happen
return false;
}
}
catch
{
return false;
}
finally
{
if (socket != null)
{
socket.Close();
socket.Dispose();
socket = null;
}
}
}
Спасибо