【发布时间】:2023-01-31 04:39:51
【问题描述】:
我制作了一个 .Net Maui 应用程序,并尝试使用 SignalR 制作它的在线版本。
连接已成功建立,我从服务器得到答复并执行了 Shell.Current.GoToAsync 命令,但页面根本没有改变。
如果我在连接外使用相同的命令,页面会按预期更改。
我认为这是因为它没有在主线程上运行,但是当我从 SignalR 服务器获得正确响应时,我需要导航到另一个页面。
通过调试我可以看到其他页面初始化是从另一个线程执行的。
下面是一个更简单的代码版本,仅显示此问题所需的内容。
[ObservableProperty]
private string connectionID;
[ObservableProperty]
private string word;
private HubConnection _connection;
[RelayCommand]
async Task JoinGame()
{
_connection = new HubConnectionBuilder()
.WithUrl($"{baseUrl}/Hub")
.Build();
_connection.On<string, string, string>("CheckIfConnectionMatchAnswer", async (connectionID, answer, word) =>
{
if (ConnectionID == connectionID && answer == "True")
{
Word = word;
await Shell.Current.GoToAsync(nameof(GamePage));
}
});
await _connection.StartAsync();
await _connection.InvokeCoreAsync("CheckConnectionID", args: new[] { ConnectionID });
}
我希望导航到另一个页面,但那没有发生。
【问题讨论】:
标签: maui asp.net-core-signalr .net-maui.shell