c# - 如何在控制台应用程序中将执行从工作线程切换到主线程?
问题描述
我有一个 .NET 控制台应用程序,除其他外,它侦听各种外部事件(websockets、udp 等......)。当事件到达时,它会在工作线程上执行此操作。我正在尝试将事件处理编组到主线程(定义为 void Main() 被启动的位置)。
之前有人问过类似的问题,但它涉及调用 Windows API。它让我尝试了各种最终不起作用的想法。
我知道要编组线程,您必须有 SynchronizationContext 和控制台应用程序,与 WinForms 和 WPF 不同,没有它。
我尝试使用自定义SyncronizationContext,但它只是不编组线程。
那么在这样的代码中,是否可以将执行编组到主线程?
static void Main() {
WebSocketListener.Register(ReceiveMessages);
}
static void ReceiveMessages(Message message) {
// fires on a worker thread
MarshalToMainThread.Post(() => ProcessOnMainThread());
}
static void ProcessOnMainThread() {
}
解决方案
推荐阅读
- ios - 如何在 Mapbox iOS SDK 中使用捆绑字体?
- firebase - Firebase,Flutter:我可以在 signInWithCredential 之前检查 PhoneAuthCredential 的有效性吗?
- python - 如何在我的 python 代码中解决这个错误?
- php - 如何获取从两个表中收集数据并更新列的对象的属性?
- tensorflow - Colab 资源和 Self-Attention(分配张量时的 OOM)
- java - Java:在某个字符之前获取子字符串
- c++ - 如何访问使用创建的列表中的结构元素
- 图书馆?
- css - Angular Material Buttons 与主题不匹配
- ibm-cloud - IBM Watson Assistant:检查输入日期是否大于或小于 18 岁的条件
- python - 是否有一个函数可以在 pandas 单元格列表中搜索一个值,如果该值是单独的或唯一的类型,则返回行?