2

これは StackOverflow に関する私の最初の投稿なので、しばらくお待ちください :)

既に実行中のアプリケーションに値を渡す方法を探しています。アプリケーションは、この値を受け入れて、その存続期間中の以降の操作に使用できる必要があります。更新された値を使用するために、アプリケーションをログオフ/再起動したくありません。

シナリオは次のようになります。

アプリケーションは、MachineName を使用して、インスタンス化中にいくつかのオブジェクトを初期化および設定します。起動して実行したら、別のワークステーション名をアプリケーションに (おそらくコマンド ラインから) 渡したいと思います。アプリケーションはこの MachineName を使用し、さらに下の行で使用できるようにする必要があります。必要なオブジェクトを新しい MachineName 名で初期化するために同じ操作を再度実行してもかまいません。

問題のアプリケーションは、C# を使用した WPF アプリです。また、いくつかの WCF サービスも使用しています。ワークステーション名を保存するために共通のレジストリ キーを使用することを考えていましたが、このレジストリ キーをアプリケーションで使用/更新する必要があります。したがって、最初の連絡先にする必要があります。しかし、これがより良いアプローチであるかどうかはわかりません。アイデアはありますか?

4

3 に答える 3

1

を使用してディスク上のファイルを監視するのは非常に簡単FileSystemWatcherです。アプリが変更通知を受け取ったら、ファイルの内容を再度読み取り、アプリの状態を更新します。

于 2012-11-01T13:03:46.133 に答える
0

まず、物事を少し複雑にしすぎているのではないかと思います。アプリケーションに新しい文字列 "MachineName" を与えるだけでよい場合は、いくつかのオプションがあります (これがすべてのオプションではなく、考えるべきいくつかのオプションです)。

  1. これは WPF アプリケーションであるため、何人かのユーザーがそれを操作していると想定できます。この場合、ユーザーが MachineName を変更できるビューを作成します。おそらく、使用可能なすべての MachineNames を一覧表示する ComboBox と、必要な再初期化を開始するためのボタンです。
  2. サービス コール用の配管はすでに整っているようです。アプリケーションをクライアントとサービスの両方として機能させて、リモートで (このアプリケーションの外部で) MachineName を更新できるようにすることができます。
  3. 特定のディレクトリまたはファイルを監視するようにこのアプリケーションを設定できます (@jlew が指摘)。そのファイルに何らかの変更が発生すると、アプリケーションは変更 (新しい MachineName) を読み取り、その再初期化ルーチンを開始します。

要件の完全なセットはわかりませんが、おそらく 1 と 2 の両方に設定すると、柔軟性が少し高くなります。

于 2012-11-01T13:48:14.790 に答える
0

アプリケーションは、ソケット ポートをリッスンするか、起動時に共有ファイルを監視します。アプリケーションがパラメーターを指定して再度呼び出された場合は、ソケット ポートを開くか、ファイルにコマンドを書き込むだけで、最初のアプリケーションが再初期化を実行できます。

于 2012-11-01T13:05:17.227 に答える