У меня есть класс Hub, который имеет длительный метод работы, мне нужно отобразить индикатор выполнения во время работы.Отчет о ходе работы с использованием интерфейса SignalR и IProgress
Я читал this article, и я думаю, что можно использовать интерфейс IProgress в асинхронных методах для отправки долгого рабочего состояния.
Я пишу метод, как это:
public async Task<string> GetServerTime(IProgress<int> prog)
{
await Task.Run(() => {
for (int i = 0; i < 10; i++)
{
prog.Report(i * 10);
System.Threading.Thread.Sleep(200);
}
});
return DateTime.Now.ToString();
}
И я пытаюсь вызвать метод как это:
var appHub = $.connection.appHub;
$.connection.hub.start();
appHub.server.getServerTime()
.done(function (time) {
alert(time);
});
Но я не знаю, как я могу получить отчеты о ходе работы.
Привет, Вам нужно создать экземпляр на IProgress на клиенте и передать его функции getServerTime. Затем вы регистрируетесь на мероприятии на IProgress на клиенте, чтобы делать ваши вещи. – kdev
Спасибо, как я могу создать экземпляр на клиенте ?! –