SOLVED VERSION
Ok so here it is. I am not even sure how to properly ask the question. I am creating a form that pops up within a program asynchronously so that it doesn't interfere with the main program. Within this form, I want to display data that comes from the "base class", in this example, it's the Metronome class. The Metronome class is also the same class that launched the form asynchronously.
I can't seem to figure out how to do this or if this is even possible. I have looked at various tutorials and can't seem to get it working. Any help would be greatly appreciated.
Here is my code:
using System;
namespace Project2
{
public class TimeOfTick : EventArgs
{
private DateTime TimeNow;
public DateTime Time
{
set
{
TimeNow = value;
}
get
{
return this.TimeNow;
}
}
}
public class Metronome
{
public event TickHandler Tick;
public delegate void TickHandler(Metronome m, TimeOfTick e);
public delegate void ListenerDelegate();
public static void myCallback(IAsyncResult result)
{
ListenerDelegate del = (ListenerDelegate)result.AsyncState;
del.EndInvoke(result);
}
public void MetronomeStarter()
{
Listener listen = new Listener();
listen.MetronomeItem = this;
ListenerDelegate del = new ListenerDelegate(listen.Starter);
del.BeginInvoke(myCallback, del);
}
public void Start()
{
while (true)
{
System.Threading.Thread.Sleep(3000);
if (Tick != null)
{
TimeOfTick TOT = new TimeOfTick();
TOT.Time = DateTime.Now;
Tick(this, TOT);
}
}
}
}
public class Listener
{
private Metronome metronomeItem;
public Metronome MetronomeItem
{
get { return metronomeItem; }
set { metronomeItem = value; }
}
public void Starter()
{
Console.WriteLine("Starting Listener class");
metronomeItem.Tick += new Metronome.TickHandler(HeardIt);
}
void HeardIt(Metronome m, TimeOfTick e)
{
System.Console.WriteLine("HEARD IT AT {0}", e.Time);
}
}
class Test
{
static void Main()
{
Metronome m = new Metronome();
m.MetronomeStarter();
m.Start();
}
}
}