Ejemplo n.º 1
0
        private static async void ConAsync()
        {
            ThreadPool.QueueUserWorkItem((A) =>
            {
                while (true)
                {
                    MessageThreadTransducer.Update(0);
                    //Thread.Yield();
                }
            });

            ///性能测试
            TestSpeed();
            ///连接测试
            //TestConnect();
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            ///将协议类的程序集注册进查找表中
            MessagePackLUT.Regist(typeof(Login).Assembly);

            ///建立主线程 或指定的任何线程 轮询。(确保在unity中使用主线程轮询)
            ///ThreadScheduler保证网络底层的各种回调函数切换到主线程执行以保证执行顺序。
            ThreadPool.QueueUserWorkItem((A) =>
            {
                while (true)
                {
                    MessageThreadTransducer.Update(0);
                    Thread.Yield();
                }
            });

            ConnectAsync();
            Console.ReadLine();
        }
Ejemplo n.º 3
0
 private static void PrepareEnvironment(CancellationTokenSource cancellation)
 {
     Task.Factory.StartNew(() =>
     {
         while (true)
         {
             MessageThreadTransducer.Update(0);
             Thread.Yield();
         }
     }, cancellation.Token, TaskCreationOptions.LongRunning, TaskScheduler.Default);
     //ThreadPool.QueueUserWorkItem((A) =>
     //{
     //    while (!cancellation.Token.IsCancellationRequested)
     //    {
     //        MainThreadScheduler.Update(0);
     //        Thread.Yield();
     //    }
     //});
     Task.Delay(50).Wait();
 }
Ejemplo n.º 4
0
        private static async void InitServer()
        {
            //MessagePackLUT.Regist(typeof(Login).Assembly);
            Protobuf_netLUT.Regist(typeof(Login).Assembly);
            ThreadPool.QueueUserWorkItem((A) =>
            {
                while (true)
                {
                    MessageThreadTransducer.Update(0);
                    Thread.Yield();
                }
            });

            await DCSContainer.Start();

            //FightService service = new FightService();
            //BusinessContainer.Instance.AddService(service);
            GateService gateService = new GateService();

            DCSContainer.AddService(gateService);
        }
Ejemplo n.º 5
0
        private static async void ListenAsync()
        {
            ThreadPool.QueueUserWorkItem((A) =>
            {
                CoolDownTime coolDown = new CoolDownTime()
                {
                    MinDelta = TimeSpan.FromSeconds(30)
                };
                while (true)
                {
                    MessageThreadTransducer.Update(0);
                    //Thread.Sleep(1);
                    //if (coolDown)
                    //{
                    //    GC.Collect();
                    //}
                }
            });

            TCPRemoteListener remote = new TCPRemoteListener(54321);

            Listen(remote);
        }
Ejemplo n.º 6
0
        static void Main(string[] args)
        {
            //decimal.TryParse("               1.03", out var a);
            //HttpClient c = new HttpClient();
            //var str = "1212";
            //var data = new StringContent(str, System.Text.Encoding.UTF8);
            //var t = c.PostAsync("http://localhost:56727/api/boc/Save", data);
            //var s = t.Result.Content.ReadAsStringAsync().Result;


            //将协议类的程序集注册进查找表中
            Protobuf_netLUT.Regist(typeof(Login).Assembly);
            //    Protobuf_netLUT.Regist(typeof(Login).Assembly);

            //建立主线程 或指定的任何线程 轮询。(确保在unity中使用主线程轮询)
            //ThreadScheduler保证网络底层的各种回调函数切换到主线程执行以保证执行顺序。
            ThreadPool.QueueUserWorkItem((A) =>
            {
                while (true)
                {
                    MessageThreadTransducer.Update(0);
                    Thread.Yield();
                }
            });

            ConnectAsync();
            while (true)
            {
                var line = Console.ReadLine();
                if (string.IsNullOrWhiteSpace(line))
                {
                    break;
                }
                remote.SendAsync(line);
            }
            Console.ReadLine();
        }