Connecting Tech Pros Worldwide Help | Site Map

Need help ASAP.....Messagebox problems.

Tressa
Guest
 
Posts: n/a
#1: Nov 16 '05
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)
{

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);
}

}
}
}


Philip Rieck
Guest
 
Posts: n/a
#2: Nov 16 '05

re: Need help ASAP.....Messagebox problems.


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]


Claire
Guest
 
Posts: n/a
#3: Nov 16 '05

re: Need help ASAP.....Messagebox problems.


bool IsDisplaying = false

void myfunc()
{
if (IsDisplaying == false)
{
IsDisplaying = true;
try
{
MessageBox.Show("hello");
}
finally
{
IsDisplaying = false;
}
}//if (IsDisplaying == false);
else
{
DoSomethingElse()
}

}

if using threads use some kind of thread safe routine for checking
IsDisplaying


Ignacio Machin \( .NET/ C# MVP \)
Guest
 
Posts: n/a
#4: Nov 16 '05

re: Need help ASAP.....Messagebox problems.


Hi,


I havent run your code , but i see that you are creating a thread and from
that thread you are calling a method that create the MessageBox, this is not
the correct way of doing that, a worker thread should not interact with the
UI, you have to make sure that the MessageBox is displayed from the UI
thread, for this you use Control.Invoke

The other thing is that I do not see where you change the value of
IsDisplayed , it should be something like:

if (IsDisplayed == false)
{

System.Diagnostics.EventLog.WriteEntry(this.ToStri ng(),sData);
// Displays the MessageBox.

isDisplayed = true;

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

isDisplayed = false;

}


Hope this help

--
Ignacio Machin,
ignacio.machin AT dot.state.fl.us
Florida Department Of Transportation



"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)
> {
>
> 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]


Stoitcho Goutsev \(100\) [C# MVP]
Guest
 
Posts: n/a
#5: Nov 16 '05

re: Need help ASAP.....Messagebox problems.


Hi Tressa,

You don't set IsDisplayed flag to true anywhere in the code. You have one
line that set one local IsDisplayer flag that to false (?!?) has been
commented out. Yes, local flag won't help you, but you forgot to set the
class field IsDisplayed. However in my opinion using flags in multithread
scenarios doesn't give you full threadsafeness. There are always chances
that you may have your message box displayed twise. You need to use some of
the synchronization objects the framework provides
Something like
if(Monitor.TryEnter(syncObject))
{
try
{
MessageBox.Show()

}
finally
{
Monitor.Exit(syncObject)
}
}
else
{
....
}

--
HTH
Stoitcho Goutsev (100) [C# MVP]


"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)
> {
>
> 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]


Closed Thread