Unity3d HoloLens的StreamSocket连接无法正常工作

Unity3d HoloLens的StreamSocket连接无法正常工作,unity3d,networking,async-await,hololens,Unity3d,Networking,Async Await,Hololens,我正在开发一个HoloLens应用程序,它作为客户端服务器连接到用Java编写的本地服务器(您可以假设服务器工作正常) HoloLens应该打开StreamSocket并连接到服务器,但由于某些原因,代码在连接过程中仍然被卡住 代码如下: void Start () { text = GameObject.Find("DEBUG_TEXT").GetComponent<Text>(); Invoke("Connect", 7f);

我正在开发一个HoloLens应用程序,它作为客户端服务器连接到用Java编写的本地服务器(您可以假设服务器工作正常)

HoloLens应该打开StreamSocket并连接到服务器,但由于某些原因,代码在连接过程中仍然被卡住

代码如下:

void Start ()
    {
        text = GameObject.Find("DEBUG_TEXT").GetComponent<Text>();
        Invoke("Connect", 7f);      
    }



 public void Connect()
    {

#if !UNITY_EDITOR
        Task.Run(async () => {
            try
            {
                socket = new StreamSocket();
                await socket.ConnectAsync(new HostName(ip), port); //STOP HERE
                writer = new StreamWriter(socket.OutputStream.AsStreamForWrite());
                reader = new StreamReader(socket.InputStream.AsStreamForRead());

                await Send("Hi");
                await Receive();

            }
            catch(Exception e)
            {
                text.text = e.Message;
            }
        });
#endif
    }
void Start()
{
text=GameObject.Find(“DEBUG_text”).GetComponent();
调用(“连接”,7f);
}
公共void Connect()
{
#如果
Task.Run(异步()=>{
尝试
{
套接字=新的StreamSocket();
wait socket.ConnectAsync(新主机名(ip)、端口);//在这里停止
writer=newstreamwriter(socket.OutputStream.AsStreamForWrite());
reader=newstreamreader(socket.InputStream.AsStreamForRead());
等待发送(“Hi”);
等待接收();
}
捕获(例外e)
{
text.text=e.信息;
}
});
#恩迪夫
}
基本上,代码在ConnectionAsync处停止,永远不会继续。在服务器端,服务器通知我“新客户端已连接!”,因此我认为HoloLens可以有效地连接,但之后会发生一些事情


你知道哪里出了问题吗?

我遇到了同样的问题,并用上面提到的方法解决了

简言之,永远不要在主线程上执行类似Task.Wait()或Task.Result的操作

在我的情况下,我使用Task.Result并正确地执行了连接操作。 删除它后,程序工作正常

下面是错误代码:

专用异步任务\u SocketSend(字符串请求)
{
使用(StreamSocket StreamSocket=new StreamSocket())
{
等待streamSocket.ConnectAsync(新主机名(this.socketHost)、this.port);
//其他代码
...
}
}
公共字符串SocketSend(字符串请求)
{
返回_SocketSend(请求)。结果;
}