Avatar billede ichiban Nybegynder
18. december 2003 - 10:53 Der er 4 kommentarer og
1 løsning

System.Messaging

Hej Alle sammen

Jeg forsøger at lære messaging, det skaber nogle problemer for mig.
Mit test program fryser. Jeg forsøger at sende en besked fra min knap til min label. Programmet fryser når jeg forsøger at modtage, og det så er fordi, at der ikke er noget at modtage og det er når jeg sender at fejlen er, ved jeg ikke.

Some help please :)
Jens



using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Messaging;


namespace Messagetest
{
    /// <summary>
    /// Summary description for Form1.
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
        private System.Windows.Forms.Button button1;
        private System.Windows.Forms.Label label1;
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.Container components = null;

        public Form1()
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();

            //
            // TODO: Add any constructor code after InitializeComponent call
            //
        }

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if (components != null)
                {
                    components.Dispose();
                }
            }
            base.Dispose( disposing );
        }

        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.button1 = new System.Windows.Forms.Button();
            this.label1 = new System.Windows.Forms.Label();
            this.SuspendLayout();
            //
            // button1
            //
            this.button1.Location = new System.Drawing.Point(72, 128);
            this.button1.Name = "button1";
            this.button1.TabIndex = 0;
            this.button1.Text = "button1";
            this.button1.Click += new System.EventHandler(this.button1_Click);
            //
            // label1
            //
            this.label1.Location = new System.Drawing.Point(16, 32);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(264, 48);
            this.label1.TabIndex = 1;
            this.label1.Text = "label1";
            //
            // Form1
            //
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(292, 266);
            this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                          this.label1,
                                                                          this.button1});
            this.Name = "Form1";
            this.Text = "Form1";
            this.ResumeLayout(false);

        }
        #endregion

        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.Run(new Form1());
        }

        private void button1_Click(object sender, System.EventArgs e)
        {
            MessageQueue myQueue = new MessageQueue(".\\private$\\testqueue");
            myQueue.Send("Det virker");



//            try
//            {
//                MessageQueue myQueue2 = new MessageQueue(".\\private$\\testqueue");
//                label1.Text= myQueue2.Receive().Body.ToString();
//            }
//            catch (MessageQueueException)
//            {
//                // Handle Message Queuing exceptions.
//            }



        }
    }
}
Avatar billede medions Nybegynder
18. december 2003 - 10:56 #1
Jamen det er jo bare at skrive:

        private void button1_Click(object sender, System.EventArgs e)
        {
        lblLabelnavn.Text = this.Text;
        }

//>Rune
Avatar billede ichiban Nybegynder
18. december 2003 - 10:57 #2
Try blokken skal naturligvis ikke være en kommentar. Det var blot, da jeg forsøgte at debugge.
Avatar billede ichiban Nybegynder
18. december 2003 - 10:59 #3
Medions:

Jo men nu er det messaging jeg forsøger at lære. Meningen er at jeg vil lære at kommuniker mellem forskellige programmer på forskellige computer.
Avatar billede burningice Nybegynder
23. december 2003 - 14:57 #4
ichiban>> har du prøvet at trace din Exception, evt. ved hjælp af MessageBox?

//            catch (MessageQueueException exc)
//            {
//                MessageBox.Show(exc.ToString());
//            }
Avatar billede jepsen999 Nybegynder
29. december 2003 - 15:27 #5
Den besked der kommer ind i message køen bliver:
<?xml version="1.0"?>..<string>Det virker</string>

Når du vil læse beskeden fra køen skal du angive det format beskeden er gemt som - i dette tilfælde en "string" i xml, da man sikkert også kan gemme komplekse objekter.

De udkommenterede linier bliver derfor

MessageQueue myQueue2 = new MessageQueue(".\\Private$\\testqueue");

// her angiver du formatet på beskeden du vil aflæse (en string i xml)
myQueue2.Formatter = new XmlMessageFormatter(new Type[]{typeof(string)});

label1.Text= myQueue2.Receive().Body.ToString();

Jeg er også ny i Messaging, men ovenstående virker da... ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester