在signalR服务器端方法中运行无限循环来广播数据
本文关键字:无限循环 广播 数据 运行 signalR 服务器端 方法 | 更新日期: 2023-09-27 18:14:50
我需要从读取器连续读取数据并将其发送给调用者。我创建了自托管窗口服务作为信号。我在里面开始了无限循环
public void ReadTags()
{
try
{
while (true)
{
var store = Reader.Read();
var tags = store.ToArray();
Clients.Caller.getTagsRead(tags);
System.Threading.Thread.Sleep(500);
}
}
catch (Exception ex)
{
System.Diagnostics.EventLog.WriteEntry("Send", ex.Message + "'n" + ex.StackTrace);
}
}
现在,我想在这个方法上有一个控件,以便能够在下次调用一个方法时暂停,播放或停止这个循环。由于Hub每次都创建一个实例,这意味着循环将在不同的实例下运行。
我怎样才能做到这一点?
我认为您应该在单独的帮助器中的Task
中运行此循环。该辅助器可以通过IoC生成Singleton
。然后,您的hub可以通过依赖注入接收helper。这样,您就可以控制Task
实例。
为了将IoC与SignalR集成,我喜欢使用LightInject。
最后,从集线器外部调用客户机