保持SignalR永远在不总是运行的代码中监听

问题描述 投票:0回答:1

我正在asp.net核心应用程序中使用signalR核心。该代码不包含任何无限循环,因此它将在某个时候结束。在不使用无限循环的情况下接收消息时,如何使signalR永久监听并执行功能?我在树莓派上运行代码,因此硬件资源有限,循环不是一个好选择;

将需要从signalR获得数据的部分放入一会儿(true)时起作用的代码;但对于树莓派来说很重pi

connection = new HubConnectionBuilder()
            .WithUrl("http://192.168.1.20:1234/getChoice")
            .Build();
connection.Closed += async (error) =>
{
   await Task.Delay(new Random().Next(0, 5) * 1000);
   await connection.StartAsync();
};
   connection.On<string, string>("ReceiveMessage", (user, message) =>
{
   controlSensors(message.ToString());
});
await connection.StartAsync();

我希望代码继续监听任何新的选择,以执行controlSensors方法中的预期功能;实际结果是代码直接完成,因为很明显它在第二秒内没有收到任何有关启动代码的消息]

c# asp.net-core .net-core raspberry-pi signalr
1个回答
1
投票

您可以在程序末尾的while循环中写入Console.Read()Console.ReadLine()。这样,while循环就不会消耗CPU资源。

while(true)
{
    Console.Read();
}
© www.soinside.com 2019 - 2024. All rights reserved.