У меня странная проблема в нашем текущем проекте Xamarin.Поскольку приложение отправляет на сервер больший кусок данных, чтобы защитить его, когда приложение становится фоновым, мы запускаем долгосрочную задачу (используя UIApplication.SharedApplication.BeginBackgroundTask / UIApplication.SharedApplication.EndBackgroundTask
API).Что странно, это то, что это прекрасно работает, когда я собираю и запускаю со своего компьютера, но некоторые из моих коллег получают ошибку времени ожидания при запуске точно такого же сценария, когда приложение было собрано / развернуто со своих компьютеров.
НасколькоЯ понимаю, что выполнение вещи в длительной задаче, как это должно работать.Мне не нужно указывать возможности фонового изображения в info.plist .Кроме того, поскольку HttpClient
использует NSUrlSession
для отправки / получения, оно должно быть защищено от прерываний, когда приложение становится фоновым, верно?
Я не могу понять, почему один и тот же код приводит к разному поведению нато же самое устройство при сборке с разными Mac.Могут ли где-то в VS быть какие-то настройки, которые могут быть локальными по отношению к машине, которые могли бы повлиять на это поведение?
У меня нет идей, поэтому любые советы будут с благодарностью приняты.
Этопример кода, который работает / не работает в зависимости от Mac, который его встроил / развернул:
public async Task Submit()
{
// ... some irrelevant code
BackgroundTask.Run(async () => await submitAsync()); // Form-level encapsulation of the UIApplication.SharedApplication.BeginBackgroundTask API
// ... more irrelevant code
}
private async Task submitAsync()
{
if (!IsSubmitAllowed)
return;
IsBusy = true;
IsGoBackAllowed = IsGoNextAllowed = false;
var statusIndicator = new StatusIndicator();
await PopupNavigation.Instance.PushAsync(statusIndicator);
try
{
statusIndicator.Status = "Saving TI";
statusIndicator.Progress = 0.1;
var submitted = await _service.SubmitAsync(Model); // ERROR! causes timeout exception for some
var submittedId = submitted.BackendId;
// ... etc.