Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.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
C# 信号器-当至少一个客户端正在侦听时,从数据库中提取数据_C#_Asp.net_Asp.net Mvc_Signalr - Fatal编程技术网

C# 信号器-当至少一个客户端正在侦听时,从数据库中提取数据

C# 信号器-当至少一个客户端正在侦听时,从数据库中提取数据,c#,asp.net,asp.net-mvc,signalr,C#,Asp.net,Asp.net Mvc,Signalr,各位信号员专家您好 我需要创建一个实时仪表板来显示从数据库中提取的数据图表。即使没有客户端在侦听,它也会在站点启动后立即从服务器端提取数据 Startup.cs代码 public partial class Startup { public void Configuration(IAppBuilder app) { ConfigureAuth(app); var hubConfiguration = new HubConfiguration();

各位信号员专家您好

我需要创建一个实时仪表板来显示从数据库中提取的数据图表。即使没有客户端在侦听,它也会在站点启动后立即从服务器端提取数据

Startup.cs代码

public partial class Startup
{
    public void Configuration(IAppBuilder app)
    {
        ConfigureAuth(app);

        var hubConfiguration = new HubConfiguration();
        hubConfiguration.EnableDetailedErrors = true;
        app.MapSignalR();


        //is this the right place for this code

        DashboardService dashboardService = new DashboardService(10000); //10 second
        Task.Factory.StartNew(async () => await dashboardService.GetDataFromDatabase());
    }
}
仪表板服务.cs

public class DashboardService
{
    private IHubContext _hubs;
    private readonly int _pollIntervalMillis;


    public DashboardService(int pollIntervalInMilliSec)
    {
        _hubs = GlobalHost.ConnectionManager.GetHubContext<DashboardHub>();
        _pollIntervalMillis = pollIntervalInMilliSec;

    }

   public async Task GetDataFromDatabase()
   {
        while (true)
        {
            await Task.Delay(_pollIntervalMillis);

            //Data Logic to pull data from database

             _hubs.Clients.All.broadcastToDashboard(broadcastObject);
        }

   }
}
公共类仪表板服务
{
私人IHubContext_中心;
私人只读int_pollIntervalMillis;
公共仪表板服务(int pollIntervalInMilliSec)
{
_hubs=GlobalHost.ConnectionManager.GetHubContext();
_pollIntervalMillis=pollIntervalInMilliSec;
}
公共异步任务GetDataFromDatabase()
{
while(true)
{
等待任务延迟(_pollIntervalMillis);
//从数据库中提取数据的数据逻辑
_hubs.Clients.All.broadcastToDashboard(broadcastObject);
}
}
}
我不希望即使没有客户机在侦听也从数据库中提取数据,而是希望仅当至少有一个客户机在侦听时才从数据库中提取数据,如果没有客户机在侦听,则停止提取数据。这可能吗?任何建议都可以作为参考


然后在提取仪表板数据之前,先检查
UserHandler.ConnectedIds.Any()

第一次连接后,是否可以使用
OnConnect
和锁定机制来运行它?