У меня есть клиентское приложение SignalR, написанное на C#, которое подписывает событие от концентратора. Когда событие «уволено», приложение выполняет метод.Как обрабатывать несколько событий одновременно в C#-клиенте
Вопрос в том, что все события такого рода, для этого клиента, обрабатываются последовательно.
Use Case/Flow:
- В браузере, пользователь нажимает кнопку
- Кнопка запускает вызов на SignalR Hub
- The SignalR Hub отправить сообщение конкретного Клиент SignalR
- Клиент SignalR принимает событие/сообщение
- Клиент SignalR вызывается метод, который будет хранить сообщение в базе данных
- SignalR Клиент вызывает метод в хаб для возврата результата
- Концентратор доставить пользователю результата
Если другой пользователь нажимает на кнопку, в то же время, SignalR Клиент будет только магазин по одному сообщению за раз.
Client Пример:
myHub.On<ExecuteRequestModel, string>("Execute", (request, to) =>
{
logger.Info("Execute request received for connectionID: " + connection.ConnectionId);
myMethod();
myHub.Invoke("ExecuteResult", response, to);
logger.Info("Execute request processed");
logger.Info("...");
});
Там в любой рекомендуемой практики для обработки нескольких событий в параллельном пути?
Можете ли вы уточнить немного больше ... может быть, пример сценария? – Hackerman
Привет @Хакерман. Вопрос обновлен. Не могли бы вы взглянуть? –
Возможно, для этого можно использовать 'Task.Run', но я не уверен, можете ли вы отправить ответ назад из другого потока. И мне интересно о дизайне. Почему веб-приложение (концентратор) связывается с уровнем базы данных SignalR и не использует веб-службу или что-то в этом роде. –