.net让线程支持超时的方法实例和线程在执行结束后销毁的方法

发布时间:2022-04-16 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了.net让线程支持超时的方法实例和线程在执行结束后销毁的方法脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。


.net让线程支持超时

使用 CancellationTokenSource

复制代码 代码如下:

PRivate static void Timeouttest1()
        {
            VAR cts = new CancellationTokenSource();

            var thread = new Thread(() =>
            {
                Console.WrITeLine(String.Format("线程{0}执行中", Thread.currentThread.ManagedThreadId));
                Thread.Sleep(10000);
                Console.WriteLine(String.Format("线程{0}执行中", Thread.CurrentThread.ManagedThreadId));
            });

            cts.Token.Register(() =>
            {
                thread.Abort();
            });
            cts.CancelAfter(1000);

            thread.Start();
            thread.Join();

            Console.WriteLine(String.Format("线程{0}的状态:{1}", thread.ManagedThreadId, thread.Threadstate));
        }

这里采用了 Abort 终止了线程,CancellationTokenSource 也支持其它模式,可以去官方看看文档。

使用 Join

复制代码 代码如下:

private static void Timeouttest2()
        {
            var thread = new Thread(() =>
            {
                Console.WriteLine(String.Format("线程{0}执行中", Thread.CurrentThread.ManagedThreadId));
                Thread.Sleep(10000);
                Console.WriteLine(String.Format("线程{0}执行中", Thread.CurrentThread.ManagedThreadId));
            });

            thread.Start();
            thread.Join(1000);
            thread.Abort();

            Console.WriteLine(String.Format("线程{0}的状态:{1}", thread.ManagedThreadId, thread.ThreadState));
        }

.net让线程在执行结束后销毁

线程执行完、遇到未处理异常和被终止后就自动不可用了,如果是垃圾,自然会被 GC 给回收,有一点需要说明的是:线程的未处理异常会导致应用程序的终止,一个线程的异常不会自动冒泡到其它线程。

 

脚本宝典总结

以上是脚本宝典为你收集整理的.net让线程支持超时的方法实例和线程在执行结束后销毁的方法全部内容,希望文章能够帮你解决.net让线程支持超时的方法实例和线程在执行结束后销毁的方法所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:线程线程