随笔分类 - 异步多线程
winform程序backgroundworker或者异步中修改控件内容需要判断控件的InvokeRequired
摘要:winform程序backgroundworker或者异步中修改控件内容需要判断控件的InvokeRequired,然后使用委托执行更改控件内容的操作。代码 using System; using System.Threading; using System.Windows.Forms; names
阅读全文
多线程的异常处理、线程取消、临时变量、TaskFactory/Task.Factory.StartNew()/线程变量副本ThreadLocal/ThreadStatic/CancellationTokenSource用法
摘要:异步多线程的异常,抓不到,因为是在子线程执行。 #region 多线程的异常处理、线程取消、临时变量、lock { try { List<Task> list = new List<Task>(); TaskFactory taskFactory = new TaskFactory(); //取消线
阅读全文
Task中Action、Func、async、await使用,Task.Run()、Thread.Sleep(1000) 和 Task.Delay(1000) 的区别
摘要:1、Action 委托,有N个入参,无返回值 Action<t1,t2,t3...> act = new Action<t1,t2,t3...>((t1,t2,t3...)=>{...});2、Func 委托,有N个入参,一个返回值,最后一个参数tn是返回值类型 Func<t1,t2,t3...,t
阅读全文
Task/Parallel实现异步多线程,等待所有线程结束,Task.WaitAny/Task.WaitAll/Parallel.Invoke阻塞主线程,taskFactory.ContinueWhenAll/taskFactory.ContinueWhenAny非阻塞主线程
摘要:代码:cancellationTokenSource.Token.ThrowIfCancellationRequested(); #region Task 异步多线程,Task是基于ThreadPool实现的 { //TestClass testClass = new TestClass(); //
阅读全文
Thread(线程)和ThreadPool(线程池) Thread回调与返回值
摘要:Thread(线程) Thread开启线程:接收一个参数 TestClass tc = new TestClass(); //没有返回值,有一个object类型的参数的委托;两种写法。 ParameterizedThreadStart threadStart1 = t => tc.TestThrea
阅读全文
委托与事件
摘要:委托是一种类型;事件是委托的一个实例。委托的意义:异步多线程、逻辑分离 public delegate string CateAction();//委托 public event CateAction CateActionEvent;//事件 事件只能在声明他的类内部调用(Invoke);委托可以在
阅读全文
线程同步
摘要:解决方案:一个资源,一次只允许一个线程使用,其他线程只能等待。直到资源被释放。 问题抽象:当某一资源可能同时被多个线程读取和修改时,资源的状态将变得难以预料。 线程同步方案:volatile、lock、Interlocked、Moniter、SpinLock、ReadWriteLockSlim、Mu
阅读全文
委托同步执行与异步执行
摘要:http://www.cnblogs.com/luxiaoxun/p/3280146.html http://developer.51cto.com/art/200908/141587.htm http://www.cnblogs.com/stg609/p/4050483.html http://w
阅读全文
多线程学习(一)
摘要:一、使用线程的理由 1、可以使用线程将代码同其他代码隔离,提高应用程序的可靠性。 2、可以使用线程来简化编码。 3、可以使用线程来实现并发执行。 二、基本知识 1、进程与线程:进程作为操作系统执行程序的基本单位,拥有应用程序的资源,进程包含线程,进程的资源被线程共享,线程不拥有资源。 2、前台线程和
阅读全文