像你需要在你的DLL中的自定義事件,您則附加到它的聲音,我的GUI。
下面是一些代碼,使其更容易理解。
首先,讓我們創建我們的DLL的模擬,做類似的東西來裝,也決定了我們可以在我們的圖形用戶界面,收到的完成百分比附加到事件:
public class MyDLLType
{
public decimal PercentageComplete = 5;
public event EventHandler<CustomEventArgs> StatusChanged;
public virtual void OnStatusChanged(CustomEventArgs e)
{
if(StatusChanged != null)
{
StatusChanged(this, e);
}
}
public void DoSomething()
{
var eventArgs = new CustomEventArgs();
eventArgs.PercentageComplete = PercentageComplete;
OnStatusChanged(eventArgs);
if(PercentageComplete < 100)
{
Thread.Sleep(500);
PercentageComplete++;
DoSomething();
}
}
}
現在我們有一個模擬DLL爲我們的GUI公開了一個StatusChanged
事件。這裏有一個模擬GUI利用這一點:
public class MyGUI
{
void Main()
{
var myNiceDLLType = new MyDLLType();
myNiceDLLType.StatusChanged += UpdateStatusChange;
myNiceDLLType.DoSomething();
}
public void UpdateStatusChange(object sender, CustomEventArgs e)
{
var percentageComplete = e.PercentageComplete;
Console.WriteLine(percentageComplete);
}
}
和賓果遊戲,我們的GUI是接收從DLL完成百分比,而不需要DLL瞭解的GUI任何東西。
我上面使用的CustomEventArgs看起來是這樣的:
public class CustomEventArgs : EventArgs
{
public decimal PercentageComplete{get;set;}
}
聽起來像是你需要在你的DLL中的自定義事件,可以在你的GUI項目進行定義。 –
但我怎麼能在沒有參考的情況下在ddl中從GUI中引發自定義事件? – bernie2436
dll代碼定義了一個事件並在某個時刻執行該事件。它不知道什麼是註冊的事件。 gui定義了要分配給事件處理函數的函數。 –