【发布时间】:2011-03-30 14:21:35
【问题描述】:
已解决的版本
好的,就是这样。我什至不知道如何正确地问这个问题。我正在创建一个在程序中异步弹出的表单,这样它就不会干扰主程序。在这个表单中,我想显示来自“基类”的数据,在这个例子中,它是节拍器类。 Metronome 类也是异步启动表单的同一个类。
我似乎无法弄清楚如何做到这一点,或者这是否可能。我查看了各种教程,但似乎无法正常工作。任何帮助将不胜感激。
这是我的代码:
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();
}
}
}
【问题讨论】:
标签: c# events asynchronous listener