我正在讀取某個進程內存中的值。比方說,我獲取它們以下列方式:觸發「外部」值更改的自定義事件
var foo = memoryService.GetFoo();
var bar = memoryService.GetBar();
因爲它不存在記憶改變的任何事件,我想創建一個使用輪詢自定義事件(如果你沒有任何其他建議) 。
由於我不知道值何時可能改變,所以輪詢間隔必須設置爲合適的值。我不知道如何實際寫這篇文章,但(如果它編譯不知道)這樣的事情可以做:
public class MemoryChange : INotifyPropertyChanged
{
private Timer _timer;
public SomethingChanged(double polingInterval)
{
_timer = new Timer();
_timer.AutoReset = false;
_timer.Interval = polingInterval;
_timer.Elapsed += timer_Elapsed;
_timer.Start();
}
private void timer_Elapsed(object sender, ElapsedEventArgs e)
{
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
}
}
我需要創建一個爲每個值實現
INotifyPropertyChanged
一個類(FOO在這種情況下吧)?有什麼辦法讓它在非阻塞線程上運行(也許使用
Task
?)?我必須使用輪詢來完成這項工作嗎?
任何輸入,非常感謝!
觸發事件是**提供者**或**發送者**的工作,所有的訂閱者或監聽者都無法觸發事件,使用'Timer'來輪詢是另一種監聽,以這種方式發射事件並不是很好,但在這種情況下,我們可能必須這樣做。 –
@KingKing是啊,我沒有想到任何其他方式......考慮到情況 – Johan