Здравствуйте, у меня есть страница, в которой я хочу отобразить переменную.Эта переменная обновляется из другого потока (Task-, который получает данные через веб-сокет), и я хочу отображать ее в поточно-ориентированном виде:
Blazor Page
@page "/new"
@inherits NewBase
<button onclick="@(async()=>await OnRunPressed())" class="control-button">Run</button>
NewValue :@socketString
public class NewBase:BlazorComponent
{
[Inject] protected BenchService service { get; set; }
protected CancellationTokenSource src = new CancellationTokenSource();
protected string socketString;
protected async Task OnRunPressed()
{
Task updateTask= Task.Run(async () =>
{
var buffer =new byte[1024];
ClientWebSocket socket = new ClientWebSocket();
await socket.ConnectAsync(new Uri("ws://localhost:8500/monitor"), CancellationToken.None);
while (true)
{
await socket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
this.socketString = Encoding.UTF8.GetString(buffer);
this.StateHasChanged();
}
},src.Token);
await this.service.HitServerAsync(); //does some stuff while the above task works
src.Cancel();
}
}
Обновление Благодаря @Dani теперь я наконец-то, по крайней мере, получил ошибку:
blazor.server.js:16 POST http://localhost:8500/_blazor/negotiate 500 (Internal Server Error)
Error: Failed to start the connection: Error: Internal Server Error