C# uwp 客户端服务器显示组件

C# uwp client server show components

我的服务器 uwp 端有问题。

我尝试像这样取消隐藏某些组件,但我的应用挂起:

private async void StreamSocketListener_ConnectionReceived(StreamSocketListener sender, StreamSocketListenerConnectionReceivedEventArgs args)
{
    string request;
    using(var streamReader = new StreamReader(args.Socket.InputStream.AsStreamForRead()))
    {
        request = await streamReader.ReadLineAsync();
    }
    await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => this.txtBlk_Events.Text = request);

    if (request.Length > 0)
    {
        btnSend.Visibility = Visibility.Visible;
    }
}

是否可以这样做? 感谢您的回答

Visibility 是一个 UI 属性 并且必须在 UI 线程上设置。在您的情况下,它将 运行 在同一线程上, ConnectionReceived 事件处理程序在 运行 上(感谢 async/await),这可能不是 UI 线程。您应该改为在 Dispatcher.RunAsync 调用中设置 Visibility 以确保它 运行 在 UI 线程上。

private async void StreamSocketListener_ConnectionReceived(StreamSocketListener sender, StreamSocketListenerConnectionReceivedEventArgs args)
{
    string request;
    using(var streamReader = new StreamReader(args.Socket.InputStream.AsStreamForRead()))
    {
        request = await streamReader.ReadLineAsync();
    }

    var setVisibility = request.Length > 0;

    await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => 
    {
       this.txtBlk_Events.Text = request;
       if ( setVisibility )
       {
          btnSend.Visibility = Visibility.Visible;
       }
    });              
}