Thread.Yield()의 이상한 일.
2086 단어 Thread.yield
실행 코드는 부팅 라인을 포함하여 이 라인의 마지막 호출을 포함합니다
Thread.Yield();
그리고 이 라인은 계속 운행되어 끝나지 않았다.이 라인에서 만든 WCF 서비스의 유효성을 판단할 수 있습니다.
class Program
{
static void Main(string[] args)
{
Thread td = new Thread(new ThreadStart(() =>
{
try
{
ServiceFacade.Register();
Thread.Yield();
}
catch
{
int t = 1;
}
}));
td.Start();
Console.WriteLine("Press <ENTER> to terminate");
Console.ReadLine();
}
}
ServiceFacade.Register();
ServiceFacad 참조.Register 코드:public class ServiceFacade
{
public static void Register()
{
Uri baseAddress = new Uri("http://127.0.0.1:8001/demo/");
ServiceHost Host = new ServiceHost(typeof(DemoService), baseAddress);
Host.AddServiceEndpoint(typeof(IDemo), new BasicHttpBinding(), "http://127.0.0.1:8001/demo/");
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
Host.Description.Behaviors.Add(smb);
Host.Open();
Console.WriteLine("The manual WCF is running at " + baseAddress.ToString() + "WCF");
//Host.Close();
}
}
DemoService 코드:
[ServiceContract]
public interface IDemo
{
[OperationContract]
int GetAge(string name);
[OperationContract]
List<int> GetAges(IList<string> names);
}
public class DemoService : IDemo
{
public int GetAge(string name)
{
return 10;
}
public List<int> GetAges(IList<string> names)
{
return new int[] { 1, 53, 23, 66 }.ToList();
}
}
이상은 모든 코드입니다. 여러분의 큰 가르침을 바랍니다.