Even though I do not fully understand your code choices yet, I'm going to post an "idea" here; if this would not work for you, perhaps if you explain why it would not work, we'll have a better understanding of what you are trying to do.
I assume that if the call to 'RemoteMonitor returns 'false that you will not want to show the 'itemMonitor Form instance:
public class MessageProcessor
{
private string responseMsg = string.Empty;
private ItemMonitor itemMonitor = new ItemMonitor();
public void isFormDispalyed()
{
if (itemMonitor.RemoteMonitor())
{
responseMsg = "Surveillance Initiated";
itemMonitor.ShowInTaskbar = false;
itemMonitor.TopMost = true;
itemMonitor.TopLevel = true;
itemMonitor.Show();
}
else
{
itemMonitor.Close();
responseMsg = "Surveillance Couldnt Be Started";
}
}
}
public partial class ItemMonitor : Form
{
public bool RemoteMonitor()
{
this.Invoke(new ClearOutPutBoxEvent(ClearOutPutBox));
isStartButtonClicked = true;
object isOpen = true;
isOpen = this.Invoke(new RemoteScanEvent(ComPortSetup));
return Convert.ToBoolean(isOpen);
}
}