后端开发
网络新概念,云计算、大数据、O2O、电商。。。。
网络新概念,云计算、大数据、O2O、电商。。。。
2023-10-17 10:49:02
https://www.bytehide.com/blog/task-run-csharp
// This example represent multiple asynchronous tasks List<Task> tasks = new List<Task>(); for (int i = 0; i < 5; i++) { int taskNum = i; // To avoid the closure variable trap tasks.Add(Task.Run(async () => { // Simulate a long-running task await Task.Delay(1000); Console.WriteLine($"Task {taskNum} completed!"); })); }; Console.WriteLine("Waiting for all tasks to complete..."); await Task.WhenAll(tasks); Console.WriteLine("All tasks completed!");
异步实践例子,while循环查询数据然后进行http请求,每次100个线程同时请求,直到数据查询完毕
int intResult = 100; while (intResult == 100) intResult = await listData(); private async Task<int> listData() { DataSet ds = GetData();//Search From DataBase if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count >= 1) { List<Task> tasks = new List<Task>(); foreach (DataRow row in ds.Tables[0].Rows) { taskNum = taskNum + 1; tasks.Add(Task.Run(async () => { string msg = await RunPost(row);//post data Debug.WriteLine($"Task {row["id"]} completed!" + msg); })); } Debug.WriteLine("000Waiting for all tasks to complete..."); await Task.WhenAll(tasks); Debug.WriteLine("All tasks completed!"); if (tasks.Count == 100) return 100;//having more else return 0; } return 0; }