如何在GUI程序中处理套接字监听器无限循环

本文关键字:处理 套接字 监听器 无限循环 程序 GUI | 更新日期: 2023-09-27 18:15:10

我正在创建一个简单的异步套接字侦听器,它充当设备的网关。这个监听器将监听任意端口,并为其他软件通过网络访问设备提供API。

要基于MSDN上的这篇文章创建异步套接字侦听器,我必须创建一个无限循环,如下所示:

while (true) {
    // Set the event to nonsignaled state.
    allDone.Reset();
    // Start an asynchronous socket to listen for connections.
    Console.WriteLine("Waiting for a connection...");
    listener.BeginAccept( 
        new AsyncCallback(AcceptCallback),
        listener
    );
    // Wait until a connection is made before continuing.
    allDone.WaitOne();
}

控制台程序原型运行良好。但是,我打算创建异步套接字侦听器的GUI版本。我知道如果我在GUI中执行无限循环,GUI就会挂起。如何为侦听器提供图形用户界面?我希望有一个简单的解决方案,不涉及线程

如何在GUI程序中处理套接字监听器无限循环

你也可以把循环放到一个单独的线程中。

或者使用上面代码中的"asynch"部分:当创建套接字时调用BeginAccept,并在回调中处理完成后再次执行。这样你就不需要信号或循环了。