. net:在GUI线程上运行回调的异步套接字

本文关键字:回调 异步 套接字 运行 GUI 线程 net | 更新日期: 2023-09-27 18:04:45

我曾经在Delphi中编写代码,我似乎记得有一个async-socket类,在异步操作(例如,读取)被执行后,消息被发布到应用程序的消息循环,并且应用程序简单地通过泵送消息循环拾取"完成阅读"通知。

这样做的好处是,回调与发出'read'调用的线程运行在同一个线程上,这避免了线程噩梦(例如,数据竞争,在触摸控件之前必须封送到GUI线程,等等)。

在。net中可以做到这一点吗?

. net:在GUI线程上运行回调的异步套接字

网络栈和UI栈不是紧密耦合的,所以没有。然而,在你的异步回调中,你可以使用

someControl.Invoke(workToDo, args);

切换回(通过消息循环)到winforms或Dispatcher中的UI线程。在WPF中调用