【发布时间】:2010-10-16 14:15:13
【问题描述】:
我正在使用 c# 中的消息队列。我正在通过计时器调用的代码(在主线程中设置)以及后台工作线程将消息发送到队列。如果我有两个消息队列实例,一个用于计时器,一个用于后台工作线程,我会遇到任何线程问题吗?我在使用消息队列的单个实例时遇到了问题。
【问题讨论】:
标签: c# multithreading message-queue
我正在使用 c# 中的消息队列。我正在通过计时器调用的代码(在主线程中设置)以及后台工作线程将消息发送到队列。如果我有两个消息队列实例,一个用于计时器,一个用于后台工作线程,我会遇到任何线程问题吗?我在使用消息队列的单个实例时遇到了问题。
【问题讨论】:
标签: c# multithreading message-queue
只有以下方法是线程安全的:BeginPeek、BeginReceive、EndPeek(IAsyncResult)、EndReceive(IAsyncResult)、GetAllMessages、Peek 和 Receive。
只要你坚持使用这些方法就可以了(加上任何静态方法,除非明确标记为不是线程安全的)。
但是,MessageQueue 实例相当轻量级,因此您可以在需要时创建新实例(可能通过工厂来避免队列名称的全局变量)。
【讨论】: