当前位置: 首页>>代码示例>>C#>>正文


C# System.Threading.CancellationTokenSource.?.Cancel方法代码示例

本文整理汇总了C#中System.Threading.CancellationTokenSource.?.Cancel方法的典型用法代码示例。如果您正苦于以下问题:C# System.Threading.CancellationTokenSource.?.Cancel方法的具体用法?C# System.Threading.CancellationTokenSource.?.Cancel怎么用?C# System.Threading.CancellationTokenSource.?.Cancel使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在System.Threading.CancellationTokenSource的用法示例。


在下文中一共展示了System.Threading.CancellationTokenSource.?.Cancel方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: Main

        static void Main(string[] args)
        {
            if (!File.Exists(SettingFileName))
            {
                var settings = new Settings() { CarName = "carName", HubName = "CentralHost", Url = "http://url", ServoPin = "7", ServoLeft = "0", ServoRight = "100", ServoStraight = "50" };
                using (var file = File.Create(SettingFileName))
                {
                    using (var writer = new StreamWriter(file))
                    {
                        writer.Write(JsonConvert.SerializeObject(settings));
                        writer.Flush();
                    }
                }
                return;
            }

            HubConnector connector;
            CommandExecuter executer;
            try
            {
                using (var file = File.OpenText(SettingFileName))
                {
                    var setting = JsonConvert.DeserializeObject<Settings>(file.ReadToEnd());
                    connector = new HubConnector(setting.Url, setting.HubName, setting.CarName);
                    executer = new CommandExecuter(setting);
                }
                connector.ConectStart().Wait();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                return;
            }

            try
            {
                Console.WriteLine("Ready");

                string ipaddress = "";
                IPHostEntry ipentry = Dns.GetHostEntry(Dns.GetHostName());

                foreach (IPAddress ip in ipentry.AddressList)
                {
                    if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                    {
                        ipaddress = ip.ToString();
                        break;
                    }
                }

                connector.SentMessage(ipaddress);
                System.Threading.CancellationTokenSource source = new System.Threading.CancellationTokenSource();
                connector.GetCommand += command =>
                {
                    source?.Cancel();
                    source = new System.Threading.CancellationTokenSource();
                    connector.StartExcuting();
                    executer.Excute(command, source.Token).ContinueWith(t => connector.EndExcuting()).Start();
                };

                connector.AbortExcuting += () =>
                {
                    if(!source.IsCancellationRequested)
                    {
                        source.Cancel();
                    }
                };

                connector.Shutdown += () =>
                {
                    Console.WriteLine("Shutdown");
                };

                connector.Reboot += () =>
                {
                    Console.WriteLine("Reboot");
                };

                connector.ConnectingToClient += client => Console.WriteLine($"{client} is connected");

                connector.DisconnectingFromClient += () => Console.WriteLine("disconected");

                Console.Read();
            }
            catch (Exception ex)
            {
                connector.SentMessage(ex.ToString());
            }
            finally
            {
                connector.ConectStop().Wait();
                executer?.Dispose();
            }
        }
开发者ID:ikihiki,项目名称:CarController,代码行数:94,代码来源:Program.cs


注:本文中的System.Threading.CancellationTokenSource.?.Cancel方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。