2009-12-11 4 views
6

私は、ネットワーク通信を大量に行うWindowsサービスを作成しています。ユーザーに(ログオンしている場合)通知する方法が必要です例外/エラー。サービスがデスクトップとやりとりできるようにすることが悪い習慣であることは分かっています。そのため、ユーザーにエラーが発生したことを通知する別の方法がありますか?私はイベントロギングを認識していますが、システムトレイやユーザーの注目を集めるものからバブル通知を表示することもできます。.Net Windowsサービスがユーザーにエラーを報告するための最良の方法

答えて

7

イベントログと監視専用のアプリケーションをご利用ください。電子メールまたはMSMQの使用を検討することもできます。

4

他のアプリを使ってこのアプリケーションとやりとりし、エラーについてユーザーに通知するにはどうすればよいですか?この方法で、ユーザーに「オプション」を付けることができます。アラート、メールなどをオフにすることができます

5

通常、サービスが通知できるセカンダリアプリがあります。たとえば、何か重要なことが起こったときに、バルーンをポップアップするシステムトレーアイコン(ugh)を表示することができます(二重)。アプリ自体は、あなたのサービスの設定のためのインターフェースを提示することもできます。

2

「デスクトップとやりとりする」オプションの代わりを提供する必要があります。 VistaおよびWin7ではサポートされなくなりました。高度に特権のあるアカウントで実行されるUIへの制限されたユーザーアクセスを与えることは、あまりにも大きなセキュリティリスクとみなされました。 Googleの "セッション0の隔離"を参照してください。

.NETでサポートされているプロセス相互運用機能の1つを使用して、サービスとUIアプリケーションの間の相互作用を設定する必要があります。単純なメッセージの受け渡しには、ソケットまたは名前付きパイプを使用します。パイプ名には、すべてのセッションに表示される「グローバル\」プレフィックスが必要です。より複雑なやり取りを行うには、RemotingまたはWCFを使用できます。

ユーザーがデスクトップアプリケーションを実行したり、終了したりする可能性があることに注意してください。 EventLogクラスでエラーを記録する必要があります。

1

この問題を解決するために、ユーザーが自由に起動して停止できるWindowsフォームアプリケーションを作成しました。もちろん、Windowsサービスは24時間365日、バックグラウンドで実行されています。アプリケーションが開始されると、Windows Communication Foundation(WCF)を使用してサービスに現在のステータス(アクティブであるか、接続されているクライアントの数、収集されたバイト数など)を照会します。この情報は、アプリケーション内

タスクマネージャの動作を模倣しようとしたので、システムトレイにアイコンを表示するアプリケーションのメインフォームにSystem.Windows.Forms.NotifyIconも追加しました。アプリケーションが開いていると、システムトレイのアイコンが表示されます。ユーザは、タスクバーへのアプリケーションを最小限に抑えることができ、またはアプリケーションを完全に隠すことができます。トレイアイコンは、ユーザーがアプリケーションを閉じると消えてしまいます。トレイアイコンは、アプリケーションを再度開くためのダブルクリックと、機能にすばやくアクセスするためのポップアップメニューもサポートしています。

いずれにしても、WCFはサービスとフロントエンドアプリケーションの通信を行う最も簡単な方法です。人々は、WCFに関連した「急な」学習曲線を主張するだろうが、私はそれを経験しなかった。 WCFはプロセス間通信を開発するための非常に効率的な方法であることがわかりました。 this videoを見れば、WCFのプログラミングパラダイムを理解することができます。

関連する問題