C# C uwp客户端服务器显示组件
我的服务器uwp端有问题 我尝试取消隐藏一些类似的组件,但我的应用程序挂起:C# C uwp客户端服务器显示组件,c#,uwp,client,visibility,C#,Uwp,Client,Visibility,我的服务器uwp端有问题 我尝试取消隐藏一些类似的组件,但我的应用程序挂起: private async void StreamSocketListener_ConnectionReceived(StreamSocketListener sender, StreamSocketListenerConnectionReceivedEventArgs args) { string request; using(var streamReader = new StreamReader(a
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;
}
}
有没有可能做到这一点?
感谢您的回答可见性是一个UI属性,必须在UI线程上设置。在您的情况下,它将在ConnectionReceived事件处理程序运行的同一线程上运行,这要感谢async/await,它可能不是UI线程。您应该在Dispatcher.RunAsync调用中设置可见性,以确保它在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;
}
});
}
它到底挂在哪里?on:btnSend.Visibility=Visibility.Visibility;如果我评论这条线,服务器保持活力,谢谢你的帮助和解释。如果它解决了你的问题,请考虑接受答案作为解决方案,这样问题就解决了。