当前位置: 移动技术网 > IT编程>开发语言>.net > .net让线程支持超时的方法实例和线程在执行结束后销毁的方法

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

2017年12月12日  | 移动技术网IT编程  | 我要评论
.net让线程支持超时 使用 cancellationtokensource复制代码 代码如下:private static void timeouttest1()&nb


.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 给回收,有一点需要说明的是:线程的未处理异常会导致应用程序的终止,一个线程的异常不会自动冒泡到其它线程。

 

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网