C# 异步与线程
来源:互联网 发布:淘宝类目有哪些 编辑:程序博客网 时间:2024/05/22 06:56
1、Task
using System;using System.Linq;using System.Threading;using System.Threading.Tasks;using System.Web.Mvc;namespace Web.Controllers{ public class HomeController : Controller { #region Async Method /// <summary> /// /// </summary> /// <returns></returns> public async Task<int> MethodAsync() { var today = await Task.FromResult<string>(DateTime.Now.DayOfWeek.ToString()); int leisureHours; if (today.First() == 'S') leisureHours = 16; else leisureHours = 5; return leisureHours; } /// <summary> /// 异步打印传入的字符串 /// </summary> /// <param name="str"></param> /// <returns></returns> public async Task<string> AsyncPringString(string str) { return await Task.FromResult<string>("刘德华"); } /// <summary> /// /// </summary> /// <returns></returns> public async Task<string> ss() { return await Task.Run(() => PrintString()); } /// <summary> /// 多线程执行后,执行另一个方法 /// </summary> public void a() { var task1 = Task.Factory.StartNew(() => PrintString()).ContinueWith( task => { Console.WriteLine(task.Result.ToString()); }).ContinueWith( task => { Console.WriteLine("结束"); }); } /// <summary> /// 等待所有线程结束 /// </summary> public void b() { var task1 = Task.Factory.StartNew(() => PrintString()); var task2 = Task.Factory.StartNew(() => PrintString()); var task3 = Task.Factory.StartNew(() => PrintString()); Task.WaitAll(task1, task2, task3); } /// <summary> /// 等待其中一个线程结束 /// </summary> public void c() { var task1 = Task.Factory.StartNew(() => PrintString()); var task2 = Task.Factory.StartNew(() => PrintString()); var task3 = Task.Factory.StartNew(() => PrintString()); Task.WaitAny(task1, task2, task3); } /// <summary> /// 等待所有线程结束执行的方法 /// </summary> public void d() { var task1 = Task.Factory.StartNew(() => { Thread.Sleep(3000); return "dummy value 1"; }); var task2 = Task.Factory.StartNew(() => { Thread.Sleep(3000); return "dummy value 2"; }); var task3 = Task.Factory.StartNew(() => { Thread.Sleep(3000); return "dummy value 3"; }); Task.Factory.ContinueWhenAll(new[] { task1, task2, task3 }, tasks => { foreach (Task<string> task in tasks) { Console.WriteLine(task.Result); } }); } #endregion #region Private Method private string PrintString() { return "Hello World!"; } #endregion }}
2、Thread
无参数
public ActionResult FreeCallBack(){ try { Thread thread1 = new Thread(new ThreadStart(test)); thread1.IsBackground = true; thread1.Start(); } catch (Exception) { } return View();}void test(){}
有参数
public ActionResult FreeCallBack(){ try { string conferenceid = "123456"; Thread thread = new Thread(new ParameterizedThreadStart(Monitor)); thread.IsBackground = true; thread.Start(conferenceid); } catch (Exception) { } return View();}void Monitor(object conferenceid){}
0 0
- C# 线程与异步
- C# 异步与线程
- C#线程与异步调用
- C#异步调用与线程总结
- C# 异步调用与线程总结
- C#异步调用与线程总结
- C#线程 异步调用
- C#异步和线程
- C# 线程,异步,协程
- C#异步跨线程
- CLR via C#线程池与委托异步调用
- 线程同步与异步
- 线程同步与异步
- 线程同步与异步
- 线程同步与异步
- C#异步线程(一)异步委托
- C#多线程与异步
- C# 异步与等待
- Spring JdbcTemplate实现通用的泛型dao四:通用自定义转换到JavaBean的RowMapper实现
- css3动画的一些chromium的堆栈
- 【前端】【head部分】 rel='stylesheet'
- 检测浏览器是否是手机
- android 沉浸式状态栏(像ios那样的状态栏与应用统一颜色样式)
- C# 异步与线程
- 关于更改js文件浏览器不能同步更新的问题
- iOS开发 高德地图 解决点击大头针跳转页面 返回无法点击的问题
- 如何实现pushViewController:animated:的不同页面转换特效?
- LeetCode 454 4Sum II
- Android 内存分析
- Django登陆访问限制@login_required
- 对移动通信的浅究
- Linux组播编程