in Form1:
public Form1()
{
InitializeComponent();
_myMain = new Main(this);
_myMain.myServer.LogEvent += new EventHandler<LogEventArgs>(Form1_LogEvent);
}
//Handle log events
private void Form1_LogEvent(object sender, LogEventArgs e)
{
//Make sure we're invoking on the right thread
if (InvokeRequired)
{
//Invoke the other-thread method on the Form thread
Invoke(new EventHandler<LogEventArgs>(Form1_LogEvent));
}
updateLog(e.EntryString);
}
in Server:
//Threading and Event
public event EventHandler<LogEventArgs> LogEvent;
Thread myServerThread;
private void OnLogEvent(string entryString)
{
EventHandler<LogEventArgs> myHandler = LogEvent;
if (myHandler != null)
{
//Throw the event
myHandler(this, entryString);
}
}
in LogEventArgs:
private readonly string _entryString;
public LogEventArgs(string entryString)
{
_entryString = entryString;
}
public string EntryString
{
get { return _entryString; }
}