저는 아직이 기사에서 초보자입니다. 이벤트를보다 잘 이해하고 올바르게 사용하는 방법을 배우려고합니다.관리자 유형 클래스의 이벤트 등록
나는 한 무리의 객체를 저장하는 컨테이너가있는 관리자 클래스가 있습니다. 각 객체에는 이벤트가 있습니다 (본질적으로 그것이하는 일을 마쳤다고 말함). 이벤트가 발생하면 관리자 클래스에서 이벤트를 구독하고 컨테이너에서 객체를 제거하고 싶습니다.
개체의 이벤트에 등록 할 때 해당 개체의 모든 인스턴스에 등록 되는가, 아니면 인스턴스에 특정한 것입니까? 그래서 여기
이의 종류 내가보고있는 무슨 :
class MyManager
{
private ConcurrentDictionary<string, MyObject> m_myObjectCollection;
public MyManager()
{
m_myObjectCollection = new ConcurrentDictionary<string, MyObject>();
}
private void RemoveObject(MyObject myObject)
{
//remove object from collection
}
}
class MyObject
{
public delegate void MyObjectFinished_EventHandler(object source, EventArgs e);
public event MyObjectFinished_EventHandler OnFinished;
public MyObject()
{
this.OnFinished += new MyObjectFinished_EventHandler(MyObject_OnFinished);
}
private void MyObject_OnFinished(object source, EventArgs e)
{
//do some clean up stuff
}
private void DoStuff()
{
//do stuff until finished
OnFinished(this, new EventArgs());
}
는 관리자 클래스는 MyObject를의 인스턴스를 만든 다음 해당 개체의 이벤트에 등록하도록 충분히 있습니까? 그건 나에게 맞는 것 같지 않다. 내 본능은 내가 그 객체의 사건에 대해서만 등록 될 것이고, 그 객체 유형의 모든 인스턴스가 아니라고 말하고있다.
또는 컬렉션에 추가 할 때마다 각 MyObject에 등록해야합니다. 그리고 제거 될 때 등록 해제해야합니까?
또는이 모든 것을 더 잘 처리 할 수있는 방법이 있습니까?
나는 그럴 것이라고 생각했다. 나를 위해 그것을 명확히하기 위해 시간을내어 주셔서 대단히 감사합니다! – Blau