Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 跑步及;停止无限期运行并向客户端广播的信号器方法_Javascript_C#_Asp.net_Asp.net Mvc_Signalr - Fatal编程技术网

Javascript 跑步及;停止无限期运行并向客户端广播的信号器方法

Javascript 跑步及;停止无限期运行并向客户端广播的信号器方法,javascript,c#,asp.net,asp.net-mvc,signalr,Javascript,C#,Asp.net,Asp.net Mvc,Signalr,假设我有两个服务在某个远程服务器上运行。当我订阅这些服务时,它们开始每秒/分钟发送x大量消息 现在,让我们假设我有一个MVC网站,它使用信号器 $(function () { var continiousTaskHub = $.connection.continiousTaskHub; continiousTaskHub.client.updateData = function (data) { // Do something with data };

假设我有两个服务在某个远程服务器上运行。当我订阅这些服务时,它们开始每秒/分钟发送x大量消息

现在,让我们假设我有一个MVC网站,它使用信号器

$(function () {
    var continiousTaskHub = $.connection.continiousTaskHub;
    continiousTaskHub.client.updateData = function (data) {
        // Do something with data
    };
    $.connection.hub.start().done(function () {
        $("#start").on('click', function () {
            continiousTaskHub.server.continiousTask();
        });
    });
});
当用户单击“开始”按钮时,我希望开始连续地接收来自这两个命名服务的数据并将其发送回客户端

我目前的设计是可行的,但我担心这是一个非常糟糕的方法

public void ContiniousTask() 
{
    // some logic here
    foreach (var item in someCollection)
    {
        Task.Factory.StartNew(async () =>
        {
            while (true)
            {
                // some logic here
                this.Clients.Caller.updateData(data);
            }
        }, null);
    }
}
我要做的是为调用该中心方法的每个客户端创建一个后台任务,并开始发送数据。这是一个无限循环

忽略这个糟糕的设计,还有一个问题(如果我错了,请纠正我),即当用户更改网页时,功能/任务将继续运行-因此,至少,我必须找到一种方法来添加某种取消令牌

我现在想到的一个解决方案是尝试/捕获this.Clients.Caller.updateData部分,以检查客户端是否仍然需要新数据(如果客户端更改了网站/视图,则无法发送数据,因此会中止)


任何提示都将不胜感激。

我认为您可以监控与客户端连接和断开连接的状态。您可以从中学到很多东西。如果您能够提供一些背景信息,说明您正在尝试完成的任务以及为什么要使用连续任务更新您的客户端,这将有所帮助。我认为您可能正在尝试做一些非常重要的事情就绪内置信号您可以设置一个计时器,在视图上以设置的间隔调用中心。这将确保您仅在该特定页面上更新。