zoukankan      html  css  js  c++  java
  • C#知识点集锦(六)捕捉子线程中的异常

    1使用Task

            public Form1()
            {
                InitializeComponent();
                Init();
            }
    
            private void Init()
            {
                Task<int> task = new Task<int>(test);
                task.ContinueWith(Handler, TaskContinuationOptions.OnlyOnFaulted);
                task.Start();
            }
    
            private void Handler(Task<int> obj)
            {
                string id=("In handler thread ,id is " + Thread.CurrentThread.ManagedThreadId);
                var exception = obj.Exception;
                MessageBox.Show($"With thread id {id}, exception: {exception}");
            }
    
            private int test()
            {
                Console.WriteLine("In test thread ,id is " + Thread.CurrentThread.ManagedThreadId);
                throw new NotImplementedException();
            }

    输出:控制台输出

    In test thread ,id is 3

    消息框输出:in handler Thread id is4

    方式2:使用Task的 Wait

    class Program
    {
        static void Main(string[] args)
        {
            Task<int> task = new Task<int>(Test);
            task.Start();
    
            try
            {
                task.Wait();
            }
            catch (AggregateException ex)
            {
                Console.WriteLine(ex);    
            }
    
            Console.ReadLine();
        }
    
        static int Test()
        {
            throw new Exception();
        }
    }
  • 相关阅读:
    五,系统操作命令说明
    三,linux系统的由来
    二,服务器磁盘阵列(raid)
    一服务器硬件介绍
    四,元组类型
    集合类型
    字典类型
    三,列表类型
    二,字符串类型
    一,数字类型
  • 原文地址:https://www.cnblogs.com/noigel/p/15188497.html
Copyright © 2011-2022 走看看