Silverlight асинхронная ошибка из-за тайм-аута

@IBOutlet weak var batsmenScoreStepper:UIStepper!   

@IBAction func resetScoreButton(_ sender: Any) {
   batsmenScoreStepper.value = 0.0;
   displayBatsmenOneScoreLabel.text = "\(batsmenScoreStepper.value)"
}

Вы должны сначала взять выход из UIStepper и сбросить его.

13
задан Darron 1 December 2008 в 16:29
поделиться

5 ответов

  • Ammount соединения времени может быть открыт: BasicHttpBinding. Свойство OpenTimeout
  • Время, когда соединение может остаться неактивным, во время которого не получены никакие сообщения приложения, прежде чем оно будет отброшено: BasicHttpBinding. Свойство ReceiveTimout

Это может быть установлено в узле ServiceReference. Файл ClientConfig в приложении Silverlight.

12
ответ дан 1 December 2019 в 23:32
поделиться

Я исправил это, включив режим совместимости в IE

1
ответ дан 1 December 2019 в 23:32
поделиться

Это может быть установлено, но существует верхний предел, который определяется базовой библиотекой HTTP (я думаю ее пять минут). Обратите внимание, что использование более высокого значения отступит к тому, каков верхний предел. Кроме того, знайте, что Вы, возможно, должны настроить тайм-аут на сервере также.

1
ответ дан 1 December 2019 в 23:32
поделиться

Я считаю, что вместо изменения тайм-аута вам следует реализовать обратный вызов на сервер на основе таймера из приложения Silverlight, чтобы сеанс не истек. Это устранит накладные расходы, связанные с более длительными тайм-аутами для всего вашего приложения.

0
ответ дан 1 December 2019 в 23:32
поделиться

Принятый здесь ответ не сработал для меня. Вместо этого мне пришлось преобразовать базовый канал в IContextChannel и установить для него OperationTimeout.

Для этого мне пришлось создать новый файл с частичным классом, который соответствовал имени ServiceReference. В моем случае у меня был PrintReportsService. Код ниже.

using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace RecipeManager.PrintReportsService 
{
    public partial class PrintReportsClient : System.ServiceModel.ClientBase<RecipeManager.PrintReportsService.PrintReports>, RecipeManager.PrintReportsService.PrintReports 
    {
        public void SetOperationTimeout(TimeSpan timeout)
        {
            ((System.ServiceModel.IContextChannel)base.Channel).OperationTimeout = timeout;
        }


    }
}

Затем, когда я создаю клиента, я делаю следующее:

        PrintReportsService.PrintReportsClient client = new RecipeManager.PrintReportsService.PrintReportsClient();
        client.SetOperationTimeout(new TimeSpan(0, 4, 0));

Вот и все! Дополнительная информация доступна здесь , но фрагмент кода в этом сообщении не компилируется.

4
ответ дан 1 December 2019 в 23:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: