我正在使用 REST API 和 Web 界面构建 Blazor 应用程序。我还将有一个应用程序的监视部分,它将每秒从许多不同的数据源轮询数据。我在一个单独的类中创建了一个长时间运行的线程,它只是轮询我想要的数据,并且似乎工作正常。我使用的应用程序模板是 Blazor ASP.NET Server 应用程序。简单地像这样:
m_pollThread = new Thread(new ThreadStart(PollThread))
{
IsBackground = true
};
m_pollThread.Start();
我现在想知道的是:将这种类型的轮询线程放入 Blazor 应用程序本身的编程模式是否完全错误?这样做是否存在一些问题,会在以后适得其反(内存消耗、应用程序其余部分的性能)?我之所以问这个问题,是因为据我所知,Blazor 和 ASP.NET Core 应用程序一般都是“按需”,并在收到请求时唤醒,而不是执行长时间运行的无休止的轮询任务。例如,我不知道是否可以在 IIS 中运行它。
将这种类型的轮询线程放入 Blazor 应用程序本身的编程模式是否完全错误?
是的。它不会立即损坏,但它会带来麻烦。
解决方案很简单,ASP.NET core 可以让你运行非常容易地使用多个主机线程.
新的工作模板可能是现在的首选方式,但您真正需要的是
class MyPollingService : BackgroundService { ... }
and
services.AddHostedService<MyPollingService>();
您的收获是与框架更好的集成以及对启动和停止等的更多控制。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)