ユーザー資格情報を持つ別のアプリケーションを起動するローカルSYSTEMとして実行しているサービスがあります。 この2番目のアプリは、コールバックメソッドを使用して受信した文字列を使用してバルーンヒントをユーザーに表示するトレイアイコンです。この2番目のアプリケーションは、デュプレックスモードでWCFに接続します。C#WCFサービスへの接続の待機を強制する方法
私の問題は、何らかの理由でWCFへの接続がメソッドMainの最後に確定されていることです。だから私は最後の行 "kiosk.MyStart(args);に含まれている、実行直後にコールバックメッセージをアプリケーションに送ることはできません。コールバックはまだnullを指しています。
どうすればこの問題を解決できますか?
static void Main(string []args)
{
if (Environment.UserInteractive)
{
// Start the WCf service
var host = new ServiceHost(typeof(WcfService));
host.Open();
//Launch the Kiosk Agent which connects to the WCF
bool ret = ProcessAsUser.Launch("C:\\Program Files (x86)\\KIOSK\\KioskAgent.exe");
WinService kiosk = new WinService(args);
// some checks and a welcome message is sent to the user.
kiosk.MyStart(args);
//...
//...
}
}
編集:kiosk.MyStartメソッドの内部で、より多くのビットを明確にする私はウェルカムメッセージを表示するようにコールバックを実行しようとするところですが、コールバックは、まだNULLです。クライアントが到達できない、それは内にある場合、私は、クライアントが適切に何らかの理由で開始されなかったと仮定し、私は再びそれを起動した結果 ...
if (WcfService.Callback != null)
WcfService.Callback.UIMessageOnCallback(UIMessage);
else
ProcessAsUser.Launch("C:\\Program Files (x86)\\KIOSK\\KioskAgent.exe");
私はあなたが何を求めているのか、WCFがその 'kiosk.MyStart'メソッドに関係しているのか理解できません。あなたが表示するコードは何ですか?それはサービスですか?そして、何かがnullになるのはどこですか?それから何がnullですか? 'args'や' kiosk'?これには本当に[mcve]が必要です。 – rene
GUIアプリケーションを正常に起動するには、Windowsサービスを利用するのは悪い考えです。ログオンしているユーザーがいない場合はどうなりますか?おそらく、ログオン時にWindowsタスクマネージャを_onlyで実行していると考えますか? – MickyD
@rene、nullコールバックを呼び出そうとしたときにKiosk.mystartメソッドの中に入れました。私がその記事に追加したノートを見てください。 – jacortijo