在.Net和C#中运行异步代码相当简单,因为我们有时候需要取消正在进行的异步操作,通过本文,可以掌握 通过CancellationToken取消任务(包括non-cancellable任务)
using System.Diagnostics;Console.WriteLine("Hello, World!");var watch = Stopwatch.StartNew();
var origTask = Task.Run(Test);
var t = origTask.Wait(TimeSpan.FromSeconds(11));
if (t)
{var result = await origTask;Console.WriteLine($"在规定时间内返回结果:{result}");
}
else
{Console.WriteLine($"超时了");
}
watch.Stop();
var timeSpend = watch.Elapsed;
Console.WriteLine($"耗时:{timeSpend}");
//Console.WriteLine($"结果为:{await origTask}");
Console.ReadKey(); string Test()
{Thread.Sleep(10_000);var val = $"{DateTime.Now.Ticks}-Ni好";Console.WriteLine($"测试方法,准备返回值:{val}");return val;
}
Thread 编程方式
要想使用 Thread,需要在程序中引用 System.Threading 命名空间,然后再提供一个供线程调度的方法,这个方法是通过 Thread 中的 ThreadStart 委托代理的,下面的代码展示了如何创建线程。
Abort虽然可以立即强制终止线程,但是带来的危险也是明显的,所以我们一定要知道代码的具体作用,用起来会安心。
假设在多线程的代码中包含了多段的 INSERT 数据库类的方法,那么你调用 Abort 很可能就只能执行了一部分 INSERT 语句,而一部分没执行 导致数据库的这段数据不完整
注意Net3.0以上版本没有About 方法,需要调用 Interrupt 方法。 也可以自行包装一个类型,专门做此类工作。但是感觉上面已经够用了