C# (Xamarin) WaitHandle.WaitAny, возвращающий Int32.MaxValue (0x7FFF FFFF)
В документации к методу WaitHandle.WaitAny (WaitHandle[], Int32) говорится, что он возвращает "Индекс массива объекта, который удовлетворил ожидание, или WaitTimeout, если ни один объект не удовлетворил ожидание, и прошел интервал времени, эквивалентный millisecondsTimeout", и в Браузер сборки Я вижу, что WaitHandle.WaitTimeout равен 258.
Так почему я иногда получаю 0x7fffffff (Int32.MaxValue) в качестве возвращаемого значения из этой функции?
Это известная ошибка в WaitAny() или просто строка, отсутствующая в документации?
ДОБАВЛЕНО ПОЗЖЕ:
Кстати, ошибка происходит пару раз, а затем исчезает, и я ничего не делаю, чтобы "исправить" ручки или что-то в этом роде.
Код:
class CommandQueue
{
EventWaitHandle m_abortRequest = new EventWaitHandle (false, EventResetMode.AutoReset);
Semaphore m_commandCount = new Semaphore (0, 10000);
public CommandQueue ()
{
m_processTask = new Task(() => Process ());
m_processTask.Start ();
}
public async Task Process()
{
WaitHandle [] handles = new WaitHandle [2];
handles [0] = m_abortRequest;
handles [1] = m_commandCount;
for (;;)
{
int wait = WaitHandle.WaitAny (handles, 500);
if (wait == WaitHandle.WaitTimeout)
{
OnIdleTimer ();
}
else if (wait == 0)
{
// SNIP: Code to handle a request to abort the processing of commands
break;
}
else if (wait == 1)
{
// SNIP: Code to process the next command in the queue
await Process(nextCommand);
}
else
{
Debug.WriteLine ("*** Unexpected WaitAny(" + wait + " = 0x" + wait.ToString("X6") + ")!");
}
}
}
}