のメモリを読んで、私は、ソースコードは、私が何か非管理プロセスから
[DllImport("kernel32.dll")]
public static extern int ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, [In, Out] byte[] buffer, uint size, out IntPtr lpNumberOfBytesRead);
を使用していないと、すべてが正常に動作し、他の実行中のプロセスからメモリを読んでいます。私は私が必要とする値を取得し、今私は私のプログラムでINotifyPropertyChangedのようなものを実装したいので、その非管理プロセスの変化の値が、私のコードは、それを登録していることを私の変数Xを更新するとき
は、これまでのところ私は
を持っていますprivate string x;
public string X { get { return x; } }
....
Threading.Timer timerX = new Timer(x => UpdateX(), null, 0, 500)
....
private void UpdateX()
{
//Read value from unmanaged process
OnPropertyChanged("X");
}
は、管理されていないプロセスメモリを500msごとに読み取ってXを更新しますが、ハッキングのように感じます。また、管理されていないプロセスのメモリは、500msで数回、または数分で1回変化する可能性があるため、間隔を短くすることは過度の方法です。より洗練されたソリューションがありますか?ありがとう。
INotifyPropertyChangedの実装方法に関するご質問はありますか?あなたがそこにいる方法の一部であるようです... http://msdn.microsoft.com/en-us/library/ms743695.aspx –
マネージコードを使用するときにINPCを実装する方法を知っていますが、値が変更されたとき他のプロセスでは、私のプロセスで価値を更新したい。 – Marin
本当に、このdownvoteを正直に理解していない。私にとってそれは良い質問です。問題は、INotifyPropertyChanged(これは間違いかもしれませんが、この言葉を書き留めることです)を実装することではありませんが、資源消費量の少ない方法で通知メカニズムを実装する方法についての質問です。 +1。 @ user488819:私はあなたのケースでは、他の解決策を持っていないと思います。 – Tigran