我的博客

C# 函数设置超时

目录

下面代码展示不能单纯使用 System.Threading.Tasks 的 Wait 函数来设置超时,因为只要主进程不退出,子线程扔持续执行。可参考 C# 文档 Wait 函数并不能结束线程,而事实上并没有好办法从线程外部结束线程,除非线程自身支持。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
CancellationTokenSource tokenSource = new CancellationTokenSource();
System.Threading.Tasks.Task t = new System.Threading.Tasks.TaskFactory().StartNew(() => {
for (int i = 0; i < 10; i++)
{
System.Console.WriteLine(i);
Thread.Sleep(1000);
}
}, tokenSource);
t.Wait(3000);
t.Dispose();
for (int i = 0; i < 10; i++)
{
System.Console.WriteLine("hello");
Thread.Sleep(1000);
}
}
}
}

评论无需登录,可以匿名,欢迎评论!