0

私はこのシンプルなテキストパッド プログラムを WPF/VB.NET 2008 で作成しました。このプログラムは、キーストロークごとにフォームのコンテンツを XML ファイルに自動的に保存します。

現在、XML ファイルの変更をプログラムにリアルタイムで表示させようとしています。たとえば、2 つのテキストパッドを開いて最初のテキストパッドに書き込むと、自動的にもう一方のテキストパッドに反映されます。

これどうやってするの?

私の同僚の 1 人が、iNotifyPropertyChanged について読むように言いました (実際に読みました) が、それを自分のアプリケーションに適用するにはどうすればよいでしょうか..?

:(助けて〜

ところで、私は Google Wave のデモからアイデアを得て、実際にはもっと大きなことをしようとしています..

4

4 に答える 4

1

注 - このアプローチは、ディスク I/O、メモリ使用量、CPU 時間の点で非常にコストがかかります。編集しているデータのネイティブ形式である XML を使用する理由は何ですか? よりコンパクトなフォーマット、つまりメモリ使用量が少なく、生成される I/O が少なく、CPU 使用量が少ないフォーマットを検討することをお勧めします。

また、ウォッチャーが変更に気付くために、ライターがファイルをフラッシュする必要がある場合があることに注意してください。これもコストがかかります。特に、すべてのキー ストロークで実行している場合はなおさらです。

必ず正しいファイル オープン属性 (共有、読み取り、書き込み) を使用してください。

プロセス間の通信に共有メモリを使用することを検討することをお勧めします。これはより安価になります。ユーザーが変更をコミットするように要求した場合、またはそうするヒントがある場合にのみ変更をディスクに書き込むことで、大量のディスク I/O を回避できます。キーストロークごとにこれを行うことは避けることをお勧めします。

アプリは適切なシステム市民であり、適切な量のシステム リソースを消費する必要があることを忘れないでください。これは、ネットブックやその他の「低スペック」システムで実行する場合に特に当てはまります。

于 2009-10-01T03:02:09.983 に答える
0

プロセス間通信の形式としてファイルIOを使用しているようです。その場合、IMOは設計を再考する必要があります。特に、Google Wave(このコンテキストでより大きな意味)よりも「大きな」ことをしている場合はそうです。提案はひどく非効率的です。

プロセス間通信で検索を行うと、たとえば、共有メモリのアイデアの@foredeckerのアイデア(+1)がたくさん得られます。

于 2009-10-01T03:29:30.033 に答える
0

アプリケーションの実行中のインスタンスのプロパティではなく、ディスク上のファイルを監視するには、おそらくFileSystemWatcherを使用する必要があります。

または、アプリケーションの異なるインスタンス間でカスタム メッセージ パッシングを使用することもできます。

于 2009-10-01T02:54:00.497 に答える
0

INotifyPropertyChanged は、アプリケーションでは機能しません。そのインターフェイスは、一部の要素を UI オブジェクトにデータ バインドするときに使用されます。

最善の策は、ファイルを開いて編集するときにFileSystemWatcherをファイルに添付することです。その後、変更イベントを使用して、アプリケーションの各インスタンスで必要に応じてファイルをリロードできます。

これにより、外部エディターからの変更も読み込まれます。

于 2009-10-01T02:56:02.703 に答える