1

リモート処理と Windows サービスを使用して、アプリケーション (この場合はメモ帳) を起動しようとしています。テストのために、メモ帳を実行しようとしています。接続を確立しているように見えますが (タスク マネージャーのプロセスの下で、メモ帳が実行されています)、ウィンドウが表示されません。テキストボックスに入力してボタンをクリックすることで実行するコマンドを送信するために使用されるクライアントがあり、サービスはコマンドを取得できるはずです。私のコードには 3 つの部分があります。

MyNewService:

namespace MyNewService
{
    public partial class MyNewService : ServiceBase
    {
        bool serviceOn = false;
        string command = String.Empty;

        HttpChannel ch = new HttpChannel(4002);


        public MyNewService()
        {
            InitializeComponent();

        }

        protected override void OnStart(string[] args)
        {
            ChannelServices.RegisterChannel(ch);
            RemotingConfiguration.RegisterWellKnownServiceType(typeof(Service.Test), "ServiceURI", WellKnownObjectMode.Singleton);
        }
    }
}

サービス:

namespace Service
{
    public class Test:MarshalByRefObject
    {

        public Test()
        {

        }
        public void runCommand(string command)
        {
            Process myProcess = new Process();
            myProcess.StartInfo.FileName = command;
            myProcess.Start();
        }
    }
}

クライアント

namespace Client
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        Test t;
        string command;

        private void Form1_Load(object sender, EventArgs e)
        {
            System.Runtime.Remoting.RemotingConfiguration.RegisterWellKnownClientType(typeof(Test), "http://remoteComp:4002/ServiceURI");
            t = new Test();
        }


        private void button3_Click(object sender, EventArgs e)
        {
            command = textBox1.Text;
            t.runCommand(command);
        }
    }
}

ウィンドウが表示されるかどうかをテストするために、Windows サービスの代わりにコンソール アプリケーションを作成しました。実際にウィンドウは表示されます。ただし、Windows サービスを使用すると、プロセスはバックグラウンドでのみ実行されます。

何が起こっているのか分かりますか?

4

1 に答える 1

1

Windows サービスは、ユーザーとの対話を実行するべきではありません。Daniel Brückner からのこの投稿への応答を参照してください。ダニエルはとにかくそれを行うための2つのリンクを提供していますが、記事自体はこれらの手法を避けることを強く推奨しています.

于 2012-07-05T22:44:50.243 に答える