相关疑难解决方法(0)

从任意线程调用StateHasChanged()是否安全?

StateHasChanged()从任意线程调用安全吗?

让我给你一些背景。想象一下您拥有的服务器端Blazor / Razor组件应用程序:

  • 单例服务NewsProvider,它BreakingNews从任意线程引发事件。
  • 一个组件News.cshtml是可以获得的服务注入和订阅BreakingNews事件。引发事件时,组件将更新模型并调用StateHashChanged()

NewsProvider.cs

using System;
using System.Threading;

namespace BlazorServer.App
{
    public class BreakingNewsEventArgs: EventArgs
    {
        public readonly string News;

        public BreakingNewsEventArgs(string news)
        {
            this.News = news;
        }
    }

    public interface INewsProvider
    {
        event EventHandler<BreakingNewsEventArgs> BreakingNews;
    }

    public class NewsProvider : INewsProvider, IDisposable
    {

        private int n = 0;

        public event EventHandler<BreakingNewsEventArgs> BreakingNews;
        private Timer timer;

        public NewsProvider()
        {
            timer = new Timer(BroadCastBreakingNews, null, 10, 2000);

        } …
Run Code Online (Sandbox Code Playgroud)

c# blazor blazor-server-side

8
推荐指数
1
解决办法
2343
查看次数

标签 统计

blazor ×1

blazor-server-side ×1

c# ×1