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();
        }
    }

이상은 모든 코드입니다. 여러분의 큰 가르침을 바랍니다.

좋은 웹페이지 즐겨찾기