0
\$\begingroup\$

I have a Windows application and want to self-host a WCF in it. This MSDN article walks you through how to self-host WCF in a console. Jason Henderson's article demonstrates how to call the service. But the problem is, I don't want to host my service in another Windows process. I want to host it in my client application.

Here is my workaround:

  1. CtrlF5 to run the service
  2. Add service reference to my client application

Then I can start my service in my client like this:

static void Main()
{
    ServiceHost host = new ServiceHost(typeof(MyService));
    host.Open();
    Application.Run(new Form1());
    host.Close();
}

It works, but I wonder if there are any simpler ways to do this.

\$\endgroup\$
2
  • 1
    \$\begingroup\$ That looks pretty simple to me... what exactly do you expect us to review? \$\endgroup\$ – Jeff Mercado May 31 '12 at 5:59
  • \$\begingroup\$ i'm looking for a better solution, not my ugly workaround :) \$\endgroup\$ – walterhuang May 31 '12 at 14:01
3
\$\begingroup\$

You can also start host in another thread:

Task.Factory.StartNew(() =>
    {
            ServiceHost host = new ServiceHost(typeof(MyService));
            host.Open();
    };

(or using classic Thread and ThreadStart).

\$\endgroup\$
1
  • 1
    \$\begingroup\$ You should consider marking this Task with the TaskCreationOptions.LongRunning option \$\endgroup\$ – MrWombat Jul 27 '15 at 6:02

Not the answer you're looking for? Browse other questions tagged or ask your own question.