?
Solved

Help Needed to check to see if a message box is already being displayed to the user.

Posted on 2004-11-12
3
Medium Priority
?
308 Views
Last Modified: 2010-04-17
I have code written to create a messagebox as soon as I receive a message containing certain key words. What I need to do is to check to see if the messagebox is still on the screen for the user. If it is then I don't want to pop up another message box again.

Does anyone have any examples or know where I can find out how to do this.

This is the code I do have

      private void ReceiveData(Byte [] byteBuffer, int size)
      {
         string sData = Encoding.ASCII.GetString(byteBuffer,0, size);

         try
         {
            if((sData.ToLower().IndexOf("disk") > -1) &&
               (sData.ToLower().IndexOf("failed") > -1))
            {
               System.Diagnostics.EventLog.WriteEntry(this.ToString(),sData);
           
               // Displays the MessageBox.

                  MessageBox.Show("Failure.", "WARNING!!", MessageBoxButtons.OK,
                  MessageBoxIcon.Error, MessageBoxDefaultButton.Button1,
                  MessageBoxOptions.ServiceNotification);
            }

            else if((sData.ToLower().IndexOf("disk") > -1) &&
               (sData.ToLower().IndexOf("failed.") > -1))
            {
               System.Diagnostics.EventLog.WriteEntry(this.ToString(),sData);
           
               // Displays the MessageBox.

                  MessageBox.Show("Failure", "WARNING!!", MessageBoxButtons.OK,
                  MessageBoxIcon.Error, MessageBoxDefaultButton.Button1,
                  MessageBoxOptions.ServiceNotification);

            }

            else if((sData.ToLower().IndexOf("disk") > -1) &&
               (sData.ToLower().IndexOf("rebuilding") > -1) &&
               (sData.ToLower().IndexOf("successfully") > -1))
            {
               // post the message in the error log
               System.Diagnostics.EventLog.WriteEntry(this.ToString(),sData);

            }

            else if(sData.ToLower().IndexOf(null) > -1)
            {

               m_stopClient=true;
               m_markedForDeletion=true;

            }

            else
            {
               // post the message in the error log..to catch what message is
               System.Diagnostics.EventLog.WriteEntry(this.ToString(),sData);

               System.Diagnostics.EventLog.WriteEntry(this.ToString(),
                  "Can't process data" + "::Stopped");
            }
         }

         catch(InvalidCastException e)
         {
            System.Diagnostics.EventLog.WriteEntry(this.ToString(),
               "InvalidCast Error #" + e.Message);
         }

      }
0
Comment
Question by:NewMom2Brandon
  • 2
3 Comments
 
LVL 3

Accepted Solution

by:
djwillms earned 2000 total points
ID: 12572247
I would do something like this:

bool hasDisplayed=false;

private ShowMsg()
{ if (hasDisplayed==false)
   { hasDisplayed=true;
     msgbox("hello");
    }
}

0
 
LVL 3

Expert Comment

by:djwillms
ID: 12572253
btw, thats psuedo code, not working syntax, just for the ease of showing you how to do it.
0
 
LVL 2

Author Comment

by:NewMom2Brandon
ID: 12584879
hmmm what am I doing wrong...it is still poping up the box even though it is already displayed

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.Runtime.InteropServices;
using System.Net.Sockets;
using System.Threading;
using System.Text;
using System.IO;
using System.Xml;
using System.Xml.XPath;
using System.Web;
using System.Windows.Forms;

using QTIEventListenerOCS;

namespace QTIEventListenerOCS
{
   /// <Summary> Summary description for SocketListener.</Summary>
   public class SocketListener
   {
      /// <Remarks> Variables that are accessed by other classes indirectly.</Remarks>
      private Socket m_clientSocket = null;
      private bool m_stopClient=false;
      private Thread m_clientListenerThread=null;
      private bool m_markedForDeletion=false;
      private bool IsDisplayed=false;
      /// <Summary>Client Socket Listener Constructor.</Summary>
      /// <param name="clientSocket"></param>
      public SocketListener(Socket clientSocket)
      {
         m_clientSocket = clientSocket;
      }

      /// <Summary> Client SocketListener Destructor.</Summary>
      ~SocketListener()
      {
         StopSocketListener();
      }

      /// <Summary>  Method that starts SocketListener Thread.</Summary>
      public void StartSocketListener()
      {
         if (m_clientSocket!= null)
         {
            m_clientListenerThread =
               new Thread(new ThreadStart(SocketListenerThreadStart));

            m_clientListenerThread.Start();
         }
      }

      /// <Summary>  Thread method that does the communication to the client.</Summary>
      /// <Remarks> This thread tries to receive data from client.</remarks>
      private void SocketListenerThreadStart()
      {
         int size=0;
         Byte [] byteBuffer = new Byte[1024];

         while (!m_stopClient)
         {
            try
            {
               size = m_clientSocket.Receive(byteBuffer);
               ReceiveData(byteBuffer, size);
            }
            catch (SocketException se)
            {
               System.Diagnostics.EventLog.WriteEntry(this.ToString(),
                  "Socket Error #" + se.ErrorCode + ":: " + se.Message);

               m_stopClient=true;
               m_markedForDeletion=true;
            }
         }
      }

      /// <Summary> Method that stops Client SocketListening Thread.</Summary>
      public void StopSocketListener()
      {
         if (m_clientSocket!= null)
         {
            m_stopClient=true;
            m_clientSocket.Close();

            /// <Remarks>Wait for one second for the the thread to stop.</Remarks>
            m_clientListenerThread.Join(1000);
                        
            /// <Remarks> If still alive; Get rid of the thread.</Remarks>
            if (m_clientListenerThread.IsAlive)
            {
               m_clientListenerThread.Abort();
            }
            m_clientListenerThread=null;
            m_clientSocket=null;
            m_markedForDeletion=true;
         }
      }

      /// <Summary> Method that returns the state of this object</Summary>
      /// <Remarks> i.e. whether this object is marked for deletion or not.<Remarks>
      /// <returns></returns>
      public bool IsMarkedForDeletion()
      {
         return m_markedForDeletion;
      }


      /// <Summary> This method checks to see if the messagebox is displayed
      /// on the XXX already.</Summary>
      /// <param name="byteBuffer"></param>
      /// <param name="size"></param>
      ///
      private void MsgBxDisplayed(Byte [] byteBuffer, int size)
      {
         string sData = Encoding.ASCII.GetString(byteBuffer,0, size);
//         bool IsDisplayed = false;


         try
         {

            if (IsDisplayed == false)
            {
               System.Diagnostics.EventLog.WriteEntry(this.ToString(),sData);
               // Displays the MessageBox.

                  MessageBox.Show(" Disk Failure. Call xxxxxx", "WARNING!!", MessageBoxButtons.OK,
                  MessageBoxIcon.Error, MessageBoxDefaultButton.Button1,
                  MessageBoxOptions.ServiceNotification);
            }

            else if (IsDisplayed == true)
            {
               System.Diagnostics.EventLog.WriteEntry(this.ToString(),"Messagebox already posted");
               System.Diagnostics.EventLog.WriteEntry(this.ToString(),sData);
            }
            else
               System.Diagnostics.EventLog.WriteEntry(this.ToString(),"Messagebox check didn't work");

         }
         catch(InvalidCastException e)
         {
            System.Diagnostics.EventLog.WriteEntry(this.ToString(),
               "InvalidCast Error #" + e.Message);
         }

      }
      /// <Summary> This method reads data sent by a client from the received buffer
      /// It will post the message into the errorlog, pop up the form onto the ocs,
      /// and send a confirmation back to the client</Summary>
      /// <param name="byteBuffer"></param>
      /// <param name="size"></param>
      ///
      private void ReceiveData(Byte [] byteBuffer, int size)
      {
         string sData = Encoding.ASCII.GetString(byteBuffer,0, size);

         try
         {
            if((sData.ToLower().IndexOf("disk") > -1) &&
               (sData.ToLower().IndexOf("failed") > -1))

               {
                    MsgBxDisplayed(byteBuffer, size);
               }

               else if((sData.ToLower().IndexOf("disk") > -1) &&
                  (sData.ToLower().IndexOf("failed.") > -1))
               {

                    MsgBxDisplayed(byteBuffer, size);
               }

               else if((sData.ToLower().IndexOf("disk") > -1) &&
                  (sData.ToLower().IndexOf("rebuilding") > -1) &&
                  (sData.ToLower().IndexOf("successfully") > -1))
               {
                  // post the message in the error log
                  System.Diagnostics.EventLog.WriteEntry(this.ToString(),sData);

               }

               else if(sData.ToLower().IndexOf(null) > -1)
               {

                  m_stopClient=true;
                  m_markedForDeletion=true;

               }

               else
               {
                  // post the message in the error log..to catch what message is
                  System.Diagnostics.EventLog.WriteEntry(this.ToString(),sData);

                  System.Diagnostics.EventLog.WriteEntry(this.ToString(),
                     "Can't process data" + "::Stopped");
               }
         }

         catch(InvalidCastException e)
         {
            System.Diagnostics.EventLog.WriteEntry(this.ToString(),
               "InvalidCast Error #" + e.Message);
         }

      }
      }
}
0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This is about my first experience with programming Arduino.
In this post we will learn different types of Android Layout and some basics of an Android App.
With the power of JIRA, there's an unlimited number of ways you can customize it, use it and benefit from it. With that in mind, there's bound to be things that I wasn't able to cover in this course. With this summary we'll look at some places to go…
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…

807 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question