Я разрабатываю нативные клиентские LOB-приложения для Windows 10 для клиента.
Среда: Windows 10 Pro (на мобильных клиентах/планшетах и в коробке разработчика), Visual Studio 2015 Professional с обновлением 3, все обновления и исправления установлены. Клиентское приложение использует самую последнюю версию «IBM MobileFirst Platform SDK для универсальных платформ Windows 8 и Windows 10» версии 8.0.2017012514. На отдельной машине в моей сети установлен MobileFirst Platform Server с адаптером Java.
Приложение работает очень хорошо, когда приложение подключено к сети и доступен сервер MobileFirst Platform 8.0.
Если клиент теряет подключение к сети (например, WLAN вне зоны досягаемости или МФУ-сервер отключен), то все запросы к серверу зависают на неопределенный срок. См. следующий пример кода C#:
public async Task CallMethodMfp8()
{
Value = "Start MobileFirst Method Call " + DateTime.Now + "\n" + Value;
StringBuilder uriBuilder = new StringBuilder().Append("/adapters")
.Append("/MaximoAdapter")
.Append("/admin")
.Append("/heartbeat");
WorklightResourceRequest rr = _client.ResourceRequest(new
Uri(uriBuilder.ToString(), UriKind.Relative), "GET", "");
rr.Timeout = 500;
WorklightResponse resp = await rr.Send();
if (!resp.Success)
{
Value = "NOT SUCCESSFULL " + resp.Message + "\n" + Value;
}
else
{
Value = "Request OK" + resp.ResponseText + "\n" + Value;
}
Value = "Method Call Finished " + DateTime.Now + "\n" + Value;
}
Вызов rr.Send() не возвращается, если устройство находится в автономном режиме. Кроме того, параметр Timeout, по-видимому, не имеет никакого эффекта (согласно документам, это должно быть время ожидания в миллисекундах).
Такое поведение негативно влияет на удобство использования клиентского приложения.
Из чтения документов я ожидаю, что вызов вернется после настроенного тайм-аута и что поле resp.Success имеет значение false.
Я предполагаю, что вызов WorklightResourceRequest.Send() не должен зависать в автономном режиме и что это ошибка в библиотеке платформы MobileFirst.
Есть ли обходной путь для этого или я неправильно использую библиотеку?