私は、クラスライブラリでホストされている(httpを使用しない)名前付きパイプ(wcfを使用しない)を持っています。私は、クラスライブラリに以下の方法を使用してWCFを開始することができる午前:ボタンクリックから以下を実行しているのWinFormsテストプログラムから独自のクラスコンストラクタからWCFを開始
ServiceHost serviceHost;
public void startService()
{
// Create the service host
...
// Open Service Host
serviceHost.Open();
}
そして:
MyClassLib.MySvc testSvc;
private void button2_Click(object sender, EventArgs e)
{
testSvc = new MyClassLib.MySvc();
testSvc.startService();
}
これが正常に起動しませんWCFはクラスライブラリで実行されます。
しかし、これには、startServiceメソッドを呼び出すためにクラスライブラリを参照しているwinformsが必要です。
私が望むのは、WCFを実行するクラスライブラリへの参照が完了するとただちにサービスを開始できることです。
私はクラスライブラリサービスのコンストラクタに以下を追加しようとしてきた。そして、
public MySvc()
{
startService();
}
そして、リサイズからインスタンス化:
MyClassLib.MySvc testSvc;
private void button2_Click(object sender, EventArgs e)
{
testSvc = new MyClassLib.MySvc();
//testSvc.startService(); //No need to call this
}
私は、コードをデバッグする場合、私はその中を見ることができます実際にはこの時点で中断します:
public MySvc()
{
startService(); // It does run this but service does not start
}
しかし、これはサービスを実行しません。どんな助けもありがとう。
注#1:私はコンストラクタメソッドでサービスを開始させることはできませんが、そのことはわかりません。
あなたは 'MySvc'が、しかし、あなたのコードではどのようなものコンストラクタを呼び出しているのコンストラクタを持っていますか? (ヒント:おそらく何もない)。エントリポイントが必要です。あなたのWinformsアプリケーションを見てください。静的 'Main'メソッドを持つProgram.csファイルがあります。それがエントリーポイントです。 – helrich
コンストラクタは、クラスライブラリ内のサービスクラスの名前です。そして、私はwinformsからクラスライブラリをインスタンス化するときに呼び出されています。それはstartServiceメソッドを呼び出しても、サービスはそのようには起動しません。 –