次の方法で共有


MessageQueue.Path プロパティ

キューのパスを取得または設定します。 Path を設定すると、 MessageQueue は新しいキューを指します。

Public Property Path As String
[C#]
public string Path {get; set;}
[C++]
public: __property String* get_Path();public: __property void set_Path(String*);
[JScript]
public function get Path() : String;public function set Path(String);

プロパティ値

MessageQueue が参照するキュー。既定値は、使用する MessageQueue コンストラクタによって異なり、 null 参照 (Visual Basic では Nothing) かコンストラクタの path パラメータで指定された値になります。

例外

例外の種類 条件
ArgumentException パスが無効です。構文が無効である可能性があります。

解説

Path プロパティの構文は、指すキューの種類によって異なります。

キューの種類 構文
パブリック キュー MachineName\ QueueName
プライベート キュー MachineName\ Private$\ QueueName
ジャーナル キュー MachineName\ QueueName\ Journal$
コンピュータの履歴キュー MachineName\ Journal$
コンピュータ配信不能キュー MachineName\ Deadletter$
コンピュータ トランザクション配信不能キュー MachineName\ XactDeadletter$

ローカル コンピュータを表す場合は "." を使用します。

メモ    MachineNamePathQueueName の各プロパティは相互に関係します。 MachineName プロパティを変更すると、 Path プロパティが変更されます。これは、新しい MachineNameQueueName から構築されます。 Path を (たとえば、書式名構文を使用するように) 変更すると、新しいキューを参照するように MachineName プロパティと QueueName プロパティがリセットされます。

FormatName または Label を使用してキューのパスを記述することもできます。

参照 構文
書式名 FormatName: [ format name ] FormatName:Public= 5A5F7535-AE9A-41d4-935C-845C2AFF7112
ラベル Label: [ label ] Label: TheLabel

メッセージを送信するときに Path プロパティのラベル構文を使用する場合、 Label が一意でないと例外がスローされます。

オフラインで作業をする場合は、最初の表の表示名の構文ではなく、書式名構文を使用する必要があります。表示名の構文を使用すると、パスを書式名に解決するプライマリ ドメイン コントローラ (Active Directory が常駐) が利用できないため、例外がスローされます

新しいパスを設定すると、メッセージ キューが閉じられ、すべてのハンドルが解放されます。

このプロパティが各種のワークグループ モードで使用できるかどうかを次の表に示します。

ワークグループ モード 使用可否
ローカル コンピュータ はい
ローカル コンピュータ + 直接書式名 はい
リモート コンピュータ はい
リモート コンピュータ + 直接書式名 はい

使用例

[Visual Basic, C#, C++] さまざまな種類のパス名構文を使用して、新しい MessageQueue オブジェクトを作成する例を次に示します。いずれの場合も、コンストラクタでパスが定義されているキューにメッセージを送信します。

 
Imports System
Imports System.Messaging

Namespace MyProject

    '/ <summary>
    '/ Provides a container class for the example.
    '/ </summary>
    Public Class MyNewQueue


        '**************************************************
        ' Provides an entry point into the application.
        '         
        ' This example demonstrates several ways to set
        ' a queue's path.
        '**************************************************

        Public Shared Sub Main()

            ' Create a new instance of the class.
            Dim myNewQueue As New MyNewQueue()

            myNewQueue.SendPublic()
            myNewQueue.SendPrivate()
            myNewQueue.SendByLabel()
            myNewQueue.SendByFormatName()
            myNewQueue.MonitorComputerJournal()
            myNewQueue.MonitorQueueJournal()
            myNewQueue.MonitorDeadLetter()
            myNewQueue.MonitorTransactionalDeadLetter()

            Return

        End Sub 'Main


        ' References public queues.
        Public Sub SendPublic()

            Dim myQueue As New MessageQueue(".\myQueue")
            myQueue.Send("Public queue by path name.")

            Return

        End Sub 'SendPublic


        ' References private queues.
        Public Sub SendPrivate()

            Dim myQueue As New MessageQueue(".\Private$\myQueue")
            myQueue.Send("Private queue by path name.")

            Return

        End Sub 'SendPrivate


        ' References queues by label.
        Public Sub SendByLabel()

            Dim myQueue As New MessageQueue("Label:TheLabel")
            myQueue.Send("Queue by label.")

            Return

        End Sub 'SendByLabel


        ' References queues by format name.
        Public Sub SendByFormatName()

            Dim myQueue As New _
                MessageQueue("FormatName:Public=" + _
                    "5A5F7535-AE9A-41d4-935C-845C2AFF7112")
            myQueue.Send("Queue by format name.")

            Return

        End Sub 'SendByFormatName


        ' References computer journal queues.
        Public Sub MonitorComputerJournal()

            Dim computerJournal As New MessageQueue(".\Journal$")

            While True

                Dim journalMessage As Message = _
                    computerJournal.Receive()

                ' Process the journal message.

            End While

            Return
        End Sub 'MonitorComputerJournal


        ' References queue journal queues.
        Public Sub MonitorQueueJournal()

            Dim queueJournal As New _
                            MessageQueue(".\myQueue\Journal$")

            While True

                Dim journalMessage As Message = _
                    queueJournal.Receive()

                ' Process the journal message.

            End While

            Return
        End Sub 'MonitorQueueJournal


        ' References dead-letter queues.
        Public Sub MonitorDeadLetter()
            Dim deadLetter As New MessageQueue(".\DeadLetter$")

            While True

                Dim deadMessage As Message = deadLetter.Receive()

                ' Process the dead-letter message.

            End While

            Return

        End Sub 'MonitorDeadLetter


        ' References transactional dead-letter queues.
        Public Sub MonitorTransactionalDeadLetter()

            Dim TxDeadLetter As New MessageQueue(".\XactDeadLetter$")

            While True

                Dim txDeadLetterMessage As Message = _
                    TxDeadLetter.Receive()

                ' Process the transactional dead-letter message.

            End While

            Return

        End Sub 'MonitorTransactionalDeadLetter

    End Class 'MyNewQueue 
End Namespace 'MyProject

[C#] 
using System;
using System.Messaging;

namespace MyProject
{
    /// <summary>
    /// Provides a container class for the example.
    /// </summary>
    public class MyNewQueue
    {

        //**************************************************
        // Provides an entry point into the application.
        //         
        // This example demonstrates several ways to set
        // a queue's path.
        //**************************************************

        public static void Main()
        {
            // Create a new instance of the class.
            MyNewQueue myNewQueue = new MyNewQueue();

            myNewQueue.SendPublic();
            myNewQueue.SendPrivate();
            myNewQueue.SendByLabel();
            myNewQueue.SendByFormatName();
            myNewQueue.MonitorComputerJournal();
            myNewQueue.MonitorQueueJournal();
            myNewQueue.MonitorDeadLetter();
            myNewQueue.MonitorTransactionalDeadLetter();

            return;
        }
        
        // References public queues.
        public void SendPublic()
        {
            MessageQueue myQueue = new MessageQueue(".\\myQueue");
            myQueue.Send("Public queue by path name.");

            return;
        }

        // References private queues.
        public void SendPrivate()
        {
            MessageQueue myQueue = new 
                MessageQueue(".\\Private$\\myQueue");
            myQueue.Send("Private queue by path name.");

            return;
        }

        // References queues by label.
        public void SendByLabel()
        {
            MessageQueue myQueue = new MessageQueue("Label:TheLabel");
            myQueue.Send("Queue by label.");

            return;
        }

        // References queues by format name.
        public void SendByFormatName()
        {
            MessageQueue myQueue = new 
                MessageQueue("FormatName:Public=5A5F7535-AE9A-41d4" + 
                "-935C-845C2AFF7112");
            myQueue.Send("Queue by format name.");

            return;
        }

        // References computer journal queues.
        public void MonitorComputerJournal()
        {
            MessageQueue computerJournal = new 
                MessageQueue(".\\Journal$");
            while(true)
            {
                Message journalMessage = computerJournal.Receive();
                // Process the journal message.
            }
        }

        // References queue journal queues.
        public void MonitorQueueJournal()
        {
            MessageQueue queueJournal = new 
                MessageQueue(".\\myQueue\\Journal$");
            while(true)
            {
                Message journalMessage = queueJournal.Receive();
                // Process the journal message.
            }
        }
        
        // References dead-letter queues.
        public void MonitorDeadLetter()
        {
            MessageQueue deadLetter = new 
                MessageQueue(".\\DeadLetter$");
            while(true)
            {
                Message deadMessage = deadLetter.Receive();
                // Process the dead-letter message.
            }
        }

        // References transactional dead-letter queues.
        public void MonitorTransactionalDeadLetter()
        {
            MessageQueue TxDeadLetter = new 
                MessageQueue(".\\XactDeadLetter$");
            while(true)
            {
                Message txDeadLetter = TxDeadLetter.Receive();
                // Process the transactional dead-letter message.
            }
        }

    }
}

[C++] 
#using <mscorlib.dll>
#using <system.dll>
#using <system.messaging.dll>

using namespace System;
using namespace System::Messaging;

__gc class MyNewQueue 
{
    // References public queues.
public:
    void SendPublic() 
    {
        MessageQueue* myQueue = new MessageQueue(S".\\myQueue");
        myQueue->Send(S"Public queue by path name.");

        return;
    }

    // References private queues.
public:
    void SendPrivate() 
    {
        MessageQueue* myQueue = new MessageQueue(S".\\Private$\\myQueue");
        myQueue->Send(S"Private queue by path name.");

        return;
    }

    // References queues by label.
public:
    void SendByLabel() 
    {
        MessageQueue* myQueue = new MessageQueue(S"Label:TheLabel");
        myQueue->Send(S"Queue by label.");

        return;
    }

    // References queues by format name.
public:
    void SendByFormatName() 
    {
        MessageQueue* myQueue = new MessageQueue(S"FormatName:Public=5A5F7535-AE9A-41d4 -935C-845C2AFF7112");
        myQueue->Send(S"Queue by format name.");

        return;
    }

    // References computer journal queues.
public:
    void MonitorComputerJournal() 
    {
        MessageQueue* computerJournal = new MessageQueue(S".\\Journal$");
        while(true) 
        {
            Message* journalMessage = computerJournal->Receive();
            // Process the journal message.
        }
    }

    // References queue journal queues.
public:
    void MonitorQueueJournal() 
    {
        MessageQueue* queueJournal = new MessageQueue(S".\\myQueue\\Journal$");
        while(true) 
        {
            Message* journalMessage = queueJournal->Receive();
            // Process the journal message.
        }
    }

    // References dead-letter queues.
public:
    void MonitorDeadLetter() 
    {
        MessageQueue* deadLetter = new MessageQueue(S".\\DeadLetter$");
        while(true) 
        {
            Message* deadMessage = deadLetter->Receive();
            // Process the dead-letter message.
        }
    }

    // References transactional dead-letter queues.
public:
    void MonitorTransactionalDeadLetter() 
    {
        MessageQueue* TxDeadLetter = new MessageQueue(S".\\XactDeadLetter$");
        while(true) 
        {
            Message* txDeadLetter = TxDeadLetter->Receive();
            // Process the transactional dead-letter message.
        }
    }

};


//*************************************************
// Provides an entry point into the application.
//         
// This example demonstrates several ways to set
// a queue's path.
//*************************************************
int main() 
{
    // Create a new instance of the class.
    MyNewQueue* myNewQueue = new MyNewQueue();

    myNewQueue->SendPublic();
    myNewQueue->SendPrivate();
    myNewQueue->SendByLabel();
    myNewQueue->SendByFormatName();
    myNewQueue->MonitorComputerJournal();
    myNewQueue->MonitorQueueJournal();
    myNewQueue->MonitorDeadLetter();
    myNewQueue->MonitorTransactionalDeadLetter();

    return 0;
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

.NET Framework セキュリティ:

参照

MessageQueue クラス | MessageQueue メンバ | System.Messaging 名前空間 | QueueName | MachineName | FormatName | Label | MessageQueue | Create | Delete | Close | Exists