TCPClient 不会从自定义连接 class

TCPClient won't connect from custom class

我在 Unity 5.2.0f3 64 位上遇到了一个相当棘手的运行ge 问题。当我为 TcpClient 连接创建自己的自定义 class 时,这个连接永远不会连接。这是我的简单 class:

protected override void StartClient(string mod, string ip)
{
    RunClient(ip, mod);
}
private ManualResetEvent connectDone = new ManualResetEvent(false);
private void connect_done(IAsyncResult ar)
{
    connectDone.Set();
}

private void RunClient(string ip_host_name, string mode)
{
    try
    {
        TcpClient client = new TcpClient();

        client.BeginConnect(IPAddress.Parse(ip_host_name), 6666, new AsyncCallback(connect_done), client);
        connectDone.WaitOne();
        //Console.WriteLine("Connected");
        SslStream lv_ssl_stream = new SslStream(client.GetStream(), false,
                                            new RemoteCertificateValidationCallback(ValidateServerCertificate), null);

        if (authenticate_server(lv_ssl_stream, client))
        {

        }
        else
        {
            // Console.WriteLine("\nCouldn't authenticate the server");
        }

        client.Close();
    }
    catch (Exception e)
    {
    }
}

这是一个自定义 class,它不是从 MonoBehaviour 继承的,因为它的想法是 运行 在不同的线程上。当我执行 Unity 应用程序时,class 实例已正确创建并执行(with/out 线程,它用于相同的行为)。

当进程遇到 client.BeginConnect() 时,AsyncCallback() 被触发,但 client.connected 仍然是 false。
当我用 client.Connect() 替换 client.BeginConnect() 时,进程将挂在那里,当它不在不同的线程中执行时,Unity 框架只是转储。 (没有回应)

我首先在 .Net 2012 上开发了 class 并且可以执行它并获得所有预期结果(无错误)。

编辑:
当我在 MonoBehaviour 中创建 运行 TcpClient.Connect() 时,TcpClient 连接到我的服务器,但这对我来说不是解决方案,因为它有很多数据正在退货。

有人遇到过这类问题吗?

该问题的解决方法是创建一个普通的统一 C# 脚本,将整个客户端代码放在那里。
Unity 仍然有问题,因为第一次复制代码时,它不起作用,但评论 out/in 它起作用了(复制了 RunClient() 的代码)...