2010-02-22 2 views
0

다른 응용 프로그램에서 사용할 클래스 라이브러리를 작성 중입니다. C# .NET에서 작성했습니다. 클래스 전체에서 이벤트를 트리거하는 데 문제가 있습니다. 여기에 내가해야 할 일입니다 ... 나는이 작업을 수행하는 클래스 라이브러리를 사용하는 응용 프로그램에서 다음 수업 전반에 걸친 일정을 어떻게 시작합니까?

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); 
    } 

} 

...

public class ClientApplication 
{ 
    void main() 
    { 
     ClassLibrary myCL = new ClassLibrary(); 
     myCL.DeviceAttached += new EventHandler(myCl_deviceAttached); 
    } 

    void myCl_deviceAttached(object sender, EventArgs e) 
    { 
     //do stuff... 
    } 
} 

답변

1

아마 가장 쉬운 옵션은 방법을 추가하는 것입니다 이벤트를 발생시키는 ClassLibrary으로 ... 즉

internal void RaiseDeviceAttached(object sender, EventArgs e) 
{ 
    if (DeviceAttached != null) DeviceAttached(sender, e); 
} 

그런 다음, OtherClass에서, 단순히 ClassLibrary의 메소드를 호출합니다.

또 다른 옵션은 반사 경로로 이동하여 이벤트를 트리거하는 것입니다.

관련 문제