Piszę bibliotekę klas, która będzie używana przez inne aplikacje. Piszę to w C# .NET. Mam problem z wyzwalaniem zdarzeń na różnych klasach. Oto, co trzeba zrobić ...Jak wyzwalać zdarzenie na różnych zajęciach?
public class ClassLibrary
{
public event EventHandler DeviceAttached;
public ClassLibrary()
{
// do some stuff
OtherClass.Start();
}
}
public class OtherClass : Form
{
public Start()
{
// do things here to initialize receiving messages
}
protected override void WndProc (ref message m)
{
if (....)
{
// THIS IS WHERE I WANT TO TRIGGER THE DEVICE ATTACHED EVENT IN ClassLibrary
// I can't seem to access the eventhandler here to trigger it.
// How do I do it?
}
base.WndProc(ref m);
}
}
Następnie w aplikacji, która korzysta z biblioteki klasy będzie to zrobić ...
public class ClientApplication
{
void main()
{
ClassLibrary myCL = new ClassLibrary();
myCL.DeviceAttached += new EventHandler(myCl_deviceAttached);
}
void myCl_deviceAttached(object sender, EventArgs e)
{
//do stuff...
}
}
Na marginesie, upewnij się, że skopiowałeś program obsługi zdarzeń przed uruchomieniem go dla bezpieczeństwa wątków: 'var ev = DeviceAtached; if (ev! = null) ev(); ' – Tanzelax