使用套接字进行连接会使程序卡住

本文关键字:程序 套接字 连接 | 更新日期: 2023-09-27 18:32:36

我正在使用套接字连接到TCP服务器。但是,当我尝试连接时,整个程序冻结。如何使程序不会冻结但仍会尝试连接?

这是我的连接代码。

_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
    _socket.Connect(IP, Port);
}

使用套接字进行连接会使程序卡住

从这个问题推导出来:

Thread thread = new Thread(YourMethodName);
thread.Start();

另外,请查看此问题以了解如何使用BackgroundWorkers获得结果。

相关帖子的片段:

BackgroundWorker bw = new BackgroundWorker();
        // this allows our worker to report progress during work
        bw.WorkerReportsProgress = true;
        // what to do in the background thread
        bw.DoWork += new DoWorkEventHandler(
        delegate(object o, DoWorkEventArgs args)
        {
            BackgroundWorker b = o as BackgroundWorker;
            // do some simple processing for 10 seconds
            for (int i = 1; i <= 10; i++)
            {
                // report the progress in percent
                b.ReportProgress(i * 10);
                Thread.Sleep(1000);
            }
        });

您可以将连接逻辑委托给 BackgroudWorker Class。这样,你至少可以让 UI 线程(假设 win/WPF 应用)自由地从用户那里获取输入。