Not that I'd sign off on the approach, but to fix your immediate problem,
make sure you set "IsDisplayed" to true when you display your messagebox
(see ****'d line below). Of course, you'll have to use another method to
set IsDisplayed back to false.
--
-Philip Rieck
http://philiprieck.com/blog/
-
"Tressa" <-> wrote in message news:419a0415$1@news.qgraph.com...[color=blue]
>I have a messagebox that I only want to pop up only if it is not already
> being displayed on the screen.
>
> My code is still poping up the messagebox even though it is on the screen.
> What am I doing wrong here. Any suggestions on how to fix this
>
>
> 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 EventListenerOCS;
>
> namespace EventListener
> {
> /// <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=true;
>
> /// <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.ToStri ng(),
> "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)
> {[/color]
***** IsDisplayed = true;[color=blue]
> System.Diagnostics.EventLog.WriteEntry(this.ToStri ng(),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.ToStri ng(),"Messagebox already
> posted");
>
> System.Diagnostics.EventLog.WriteEntry(this.ToStri ng(),sData);
> }
> else
>
> System.Diagnostics.EventLog.WriteEntry(this.ToStri ng(),"Messagebox check
> didn't work");
>
> }
> catch(InvalidCastException e)
> {
> System.Diagnostics.EventLog.WriteEntry(this.ToStri ng(),
> "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.ToStri ng(),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.ToStri ng(),sData);
>
> System.Diagnostics.EventLog.WriteEntry(this.ToStri ng(),
> "Can't process data" + "::Stopped");
> }
> }
>
> catch(InvalidCastException e)
> {
> System.Diagnostics.EventLog.WriteEntry(this.ToStri ng(),
> "InvalidCast Error #" + e.Message);
> }
>
> }
> }
> }
>
>[/color]