我正在创建一个简单的异步套接字侦听器,它充当设备的网关。该侦听器将侦听任意端口,并为其他软件提供API以通过网络访问设备。
要创建一个异步套接字监听器based on this article on 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将挂起。如何为监听器提供图形用户界面?我希望有一个不涉及线程的简单解决方案。
答案 0 :(得分:1)
你可以把循环放在一个单独的线程中。
或者使用上面代码的“asynch”部分:创建套接字时调用BeginAccept
,并在回调中完成处理后再次执行。这样你根本不需要信号或循环。