【问题标题】:data to come in while and this incoming data to be returned continuously数据进来而这个进来的数据要连续返回
【发布时间】:2022-01-06 15:57:21
【问题描述】:

我的目的是,我希望数据进来,并且这个传入的数据被连续返回。

我把AddValue方法放在while里是因为我想一直添加数据。 并返回 al 时间

我的问题是我在 Hub 中调用 GetValues 但它返回为 null 我尝试了很多不同的

 public class StockCaller
    {
        public static ConcurrentDictionary<string, Stock> _stock = new ConcurrentDictionary<string, Stock>();

        public async Task AddValue()
        {
            while (true)
            {
                string[] symbols = new string[6] { "USD", "EUR", "ATLAS", "GARAN", "ISBNK", "AKBNK" };
                Random random = new Random();
                foreach (var item in symbols)
                {
                    Stock stock = new Stock()
                    {
                        symbol = item,
                        price = random.Next(100, 500),
                        percent = random.NextDouble(),
                    };
                    await AddValueAsync(stock);
                }
            }
        }

        public async Task AddValueAsync(Stock stock)
        {
            _stock.TryAdd(stock.symbol, stock);
            await Task.CompletedTask;
        }
        public Task<ICollection<Stock>> GetValues()
        {
            return Task.FromResult(_stock.Values);
        }
    }

我的集线器是 我把GetValues方法放在while里,因为我想让数据一直来。

public class MyHub : Hub
    {
        public readonly StockCaller _stock;

        public MyHub(StockCaller stock)
        {
            _stock = stock;
        }

        public async Task SendRandomCharacter()
        {
            //TcpServer can be useable
            while (true)
            { 
                var result = await _stock.GetValues();
                await Clients.All.SendAsync("receiveMessage", result);
            }      
        }
    }

【问题讨论】:

    标签: c# .net-core signalr signalr-hub


    【解决方案1】:

    我通过打开一个新线程解决了这个问题。

    像这样。

     public class StockCaller
        {
            public static ConcurrentDictionary<string, Stock> _stocks = new ConcurrentDictionary<string, Stock>();
            public StockCaller()
            {
                Thread thread1 = new Thread(new ThreadStart(AddValue));
                thread1.Start();
                //AddValue();
            }
    
            public async void AddValue()
            {
                while (true)
                {
                    string[] symbols = new string[6] { "USD", "EUR", "ATLAS", "GARAN", "ISBNK", "AKBNK" };
                    Random random = new Random();
                    foreach (var item in symbols)
                    {
                        Stock stock = new Stock()
                        {
                            symbol = item,
                            price = random.Next(100, 500),
                            percent = random.NextDouble(),
                        };
                        await AddValueAsync(stock);
                    }
                }
            }
    
            public async Task AddValueAsync(Stock stock)
            {
                _stocks.TryAdd(stock.symbol, stock);
                await Task.CompletedTask;
            }
            public async Task<ICollection<Stock>> GetValues()
            {
                return await Task.FromResult(_stocks.Values);
            }
    
            public void ClearStock()
            {
                _stocks.Clear();
            }
    
        }
    

    StockHub 还是一样,但我正在分享分享

     public class MyHub : Hub
        {
            public readonly StockCaller _stock;
    
            public MyHub(StockCaller stock)
            {
                _stock = stock;
            }
    
            public async Task<IEnumerable<Stock>> SendRandomCharacter()
            {
                while (true)
                {
                    var result = await _stock.GetValues();
                    await Clients.All.SendAsync("receiveMessage", result);
                }        
            }
        }
    

    【讨论】:

    • 你能澄清一下“StockHub 还是一样,但我正在分享分享”的意思吗?
    • @JeremyCaney 哦,我的错,MyHub 没有改变,但我在这里分享,也许有人很困惑
    猜你喜欢
    • 1970-01-01
    • 2014-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-01
    • 1970-01-01
    相关资源
    最近更新 更多