T
Tressa
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.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);
}
}
}
}
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.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);
}
}
}
}