2015-09-27 94 views
0

我需要不断从阅读器读取数据并将其发送给调用者。 我创建了自己托管的窗口服务来充当signalR。我在里面开始了无限循环。在signalR服务器端内部运行无限循环以广播数据

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每次都创建一个实例,这意味着循环将在不同的实例下运行。

我该如何做到这一点?

回答

0

我想你应该在一个单独的帮手中运行Task这个循环。这位助手可以通过IoC制作Singleton。您的中心可以通过依赖注入来接收帮助。这样,您就可以控制Task实例。

为了将IoC与SignalR集成,我喜欢使用LightInject

最后,to call clients from outside the hubs