В моем приложении Asp.Net Core я получаю обновления от клиента .Net через SignalR Core. С помощью этих обновлений я пытаюсь узнать состояние фоновой службы, работающей на клиенте .Net.
Некоторые примеры:
«Таймер успешно запущен.»
«Таймер успешно приостановлен.»
«Таймер успешно восстановлен.»
«Таймер не может быть запущен.»
Я хочу использовать эти сообщения в своем приложении Asp.Net Core и перенести их на верхний уровень моего проекта (уровень логики), отправляя события из концентратора (уровень доступа к данным).
Кажется, я не могу понять, как это сделать, и не могу найти никакой документации по этой проблеме.
public class TimerHub : Hub
{
public event EventHandler TimerCouldNotBeStarted;
// Method called by .Net Client
Task TimerStatusUpdate(string message)
{
switch (message)
{
case "Timer could not be started.":
OnTimerCouldNotBeStarted(EventArgs.Empty); // Raise event
break;
}
return Clients.All.SendAsync("EditionStatusUpdate", message);
}
protected virtual void OnTimerCouldNotBeStarted(EventArgs e)
{
TimerCouldNotBeStarted?.Invoke(this, e);
}
}
public class EditionEngine
{
private readonly IHubContext<TimerHub> _timerHubContext;
public EditionEngine(IHubContext<TimerHub> hubContext)
{
_timerHubContext = hubContext;
_timerHubContext.TimerCouldNotBeStarted += TimerNotStarted; // Event is not found in the TimerHub
}
private static void TimerNotStarted(object sender, EventArgs e)
{
Console.WriteLine("Event was raised by Hub");
}
}
В приведенном выше примере кода вы можете увидеть, что я пытаюсь выполнить. У меня проблема в том, что событие недоступно в классах за пределами хаба, поэтому я не могу его использовать.