【问题标题】:MSMQ Thread SafetyMSMQ 线程安全
【发布时间】:2010-10-16 14:15:13
【问题描述】:

我正在使用 c# 中的消息队列。我正在通过计时器调用的代码(在主线程中设置)以及后台工作线程将消息发送到队列。如果我有两个消息队列实例,一个用于计时器,一个用于后台工作线程,我会遇到任何线程问题吗?我在使用消息队列的单个实例时遇到了问题。

【问题讨论】:

    标签: c# multithreading message-queue


    【解决方案1】:

    MessageQueue on MSDN:

    只有以下方法是线程安全的:BeginPeek、BeginReceive、EndPeek(IAsyncResult)、EndReceive(IAsyncResult)、GetAllMessages、Peek 和 Receive。

    只要你坚持使用这些方法就可以了(加上任何静态方法,除非明确标记为不是线程安全的)。

    但是,MessageQueue 实例相当轻量级,因此您可以在需要时创建新实例(可能通过工厂来避免队列名称的全局变量)。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-01
    • 2011-07-13
    • 2022-11-21
    • 1970-01-01
    • 1970-01-01
    • 2021-07-12
    • 2011-03-30
    • 1970-01-01
    相关资源
    最近更新 更多