WinForm混合Blazor(下)

有时,为了省事,我们也可以把窗体的控件注入到ServiceCollection中,在razor中订阅事件,这样就省了中间的桥梁,直接用控件当桥梁,下面以一个Button和Timer为例,来展示使用方式。.

本例是把Button和Timer注入到ServieCollection,在razor中通过引用注入@inject来使用Button和Timer,然后再在OnInitialized中订阅Button的单击事件和Timer的Tick事件,通过点击按钮,Timer开始工作。业务场景是通过Timer模拟秒采集一次指标,输出到Chart的Line类型的页面上,因为web中很多图形化处理简单,美观,丰富。如果是具体采集指示的设备,sdk具有推送功能的话,可以把订单它的推送事件,采集数据,然后在web中展示。

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>WinFormsBlazor</title>
    <base href="/" />
    <link href="{PROJECT NAME}.styles.css" rel="stylesheet" />
    <link href="css/app.css" rel="stylesheet" />
    <link href="WinFormsBlazor.styles.css" rel="stylesheet" />
    <link href="css/bootstrap.min.css" rel="stylesheet" />
</head>
<body>
    <div id="app" class="container">Loading...</div>
    <div id="blazor-error-ui">
        An unhandled error has occurred.
        <a href="" class="reload">Reload</a>
        <a class="dismiss">