创建Task示例的各种方式
using System; using System.Threading; using System.Threading.Tasks; namespace ConsoleApp1 { //测试创建Task示例的各种方式 public class TaskTest { //定义方法,返回void,入参为Object private static void OpNormal(Object state) { Console.WriteLine( "In OpNormal,state=" + state); Thread.Sleep(1000); } //定义方法,返回void,入参非Object private static void OpWithParamInt(Int32 state) { Console.WriteLine( "In OpWithParamInt,state=" + state.ToString()); Thread.Sleep(1000); } //定义方法,返回类型非void,入参非Object private static Int32 OpWithParamIntAndReturnInt(Int32 state) { Console.WriteLine( "In OpWithParamIntAndReturnInt,state=" + state.ToString()); Thread.Sleep(1000); return state; } //定义方法,返回类型非void,入参为多个 private static String OpWithParamIntAndReturnInt2(ParamObj o) { String str = o.n.ToString() + o.s; Console.WriteLine( "In OpWithParamIntAndReturnInt2,state=" + o.n.ToString() + ",s=" + o.s); Thread.Sleep(1000); return str; } class ParamObj { public int n { get ; set ; } public string s { get ; set ; } } public static void RunTest() { //参数Object,无返回值 Task t1 = new Task(OpNormal, 100); t1.Start(); //参数Int32,无返回值 Task t2 = new Task(state => OpWithParamInt((Int32)state), 200); t2.Start(); //参数Int32,有返回值 Task<Int32> t3 = new Task<Int32>(n => OpWithParamIntAndReturnInt((Int32)n), 300); //Task<Int32> t3 = new Task<Int32>(() => OpWithParamIntAndReturnInt(300)); //另一种写法 t3.Start(); //指定参数timeout,毫秒,如果在指定时间内执行完毕则返回true,否则返回false. bool b = t3.Wait(1000000); Console.WriteLine( "The result is:" + t3.Result + ",The wait result is:" + b.ToString()); //多个参数,有返回值 ParamObj obj = new ParamObj { n = 400, s = "aaa" }; try { Task<String> t4 = new Task< string >(o => OpWithParamIntAndReturnInt2((ParamObj)o), obj); t4.Start(); Console.WriteLine( "The OpWithParamIntAndReturnInt2 result is:" + t4.Result); } catch (Exception ex) { } } } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端