У вас есть пара проблем.Ваш класс MyProcess
не должен вызывать события в конструкторе, а класс MyWorker
должен иметь экземпляр MyProcess
, к которому нужно присоединить событие.Другая проблема заключается в том, что вам нужно правильно объявить обработчик событий.
Давайте посмотрим на правильный шаблон событий для вашего производителя MyProcess
class:
public class MyProcess
{
public event EventHandler<NetworkShareDisconnectedEventArgs> InBoxShareDisconnected;
public MyProcess()
{
//This doesn't really do anything, don't raise events here, nothing will be
//subscribed yet, so nothing will get it.
}
//Guessing at the argument types here
public void Disconnect(object path, DateTime timestamp, bool connected)
{
RaiseEvent(new NetworkShareDisconnectedEventArgs(path, timestamp, connected));
}
protected void RaiseEvent(NetworkShareDisconnectedEventArgs e)
{
InBoxShareDisconnected?.Invoke(this, e);
}
}
И теперь мы можем посмотреть наваш потребительский класс:
public class WorkControl
{
private MyProcess _myProcess;
public WorkControl(MyProcess myProcess)
{
_myProcess = myProcess; //Need to actually set it to an object
_myProcess.InBoxShareDisconnected += HandleDisconnected;
}
private void HandleDisconnected(object sender, NetworkShareDisconnectedEventArgs e)
{
//Here you can access all the properties of "e"
}
}
Так что теперь вы можете использовать события в потребительском классе и иметь доступ ко всем свойствам NetworkShareDisconnectedEventArgs
аргументов.Это довольно стандартная модель производителя / потребителя событий.