2011-04-26 53 views
0

我有一個memorystream對象,它將被更新一個特定的時間間隔。添加一個事件到一個對象並處理它

當內存流對象發生更新時,應該創建事件&。 然後應該有一個事件處理程序來處理引發的事件。

請建議任何代碼或樣品的參考。

在此先感謝。

回答

0

有關注冊和提高自定義事件的一個很好的樣本可以在http://www.switchonthecode.com/tutorials/csharp-snippet-tutorial-custom-event-handlers

更新中找到:鏈接壞了,我用archive.org從那裏引用(Changed事件提升部分,以避免競爭條件):

using System; 

namespace CustomEvents 
{ 
    public class Car 
    { 
    public delegate void OwnerChangedEventHandler(string newOwner); 
    public event OwnerChangedEventHandler OwnerChanged; 

    private string make; 
    private string model; 
    private int year; 
    private string owner; 

    public string CarMake 
    { 
     get { return this.make; } 
     set { this.make = value; } 
    } 

    public string CarModel 
    { 
     get { return this.model; } 
     set { this.model = value; } 
    } 

    public int CarYear 
    { 
     get { return this.year; } 
     set { this.year = value; } 
    } 

    public string CarOwner 
    { 
     get { return this.owner; } 
     set 
     { 
     this.owner = value; 
     // To avoid race condition 
     var ownerchanged = this.OwnerChanged; 
     if (ownerchanged != null) 
      ownerchanged(value); 
     } 
    } 

    public Car() 
    { 
    } 
    } 
} 
+1

感謝您查找數據並將其包含在答案中! – palswim 2015-10-15 00:03:14

2

你知道事件的邏輯嗎?

如果是這樣,請在您的內存流將更新的類中創建一個事件。 更新時提出事件。

在班級'消費者註冊事件。

而且,基本上就是這樣嗎?

也許你的疑問是一般的事件。爲此,我建議你閱讀MSDN,例如

1

有幾種方法可以解決這個問題。

最簡單的方法就是那個剛剛打敗我的人建議的,而不是直接調用MemoryStream.Write(),在你的應用程序中編寫一個調用MemoryStream.Write()的方法,然後調用一個事件你聲明自己在MemoryStream目標之外。

在更奇特但更簡潔的角落,您可以大膽地從MemoryStream中繼承一個類,並在其中添加一個事件屬性並覆蓋Write()方法(或者您調用的任何方法)調用基類Write()方法,然後引發事件。有些人可能會採用這種方法,根據你使用MemoryStream的方式,它可能不是理想的或有問題的,但它可以完成你想要的工作,並防止你在每次寫作時不得不自己提出事件。

+0

+1。我想建議重寫Write()方法,我認爲這是最正確的方法 – 2011-04-26 12:32:57

相關問題