第一种快速启动
|
1
2
3
4
|
Thread t = new Thread(()=>{ //下面写一些在线程中处理的方法});t.Start(); |
第二种启动方法
|
1
2
3
4
5
6
7
|
Thread newWindowThread = new Thread(new ThreadStart(ThreadStartingPoint));newWindowThread.Start();//线程调用方法private void ThreadStartingPoint(){ //下面写一些在线程中处理的方法} |
|
1
2
3
4
5
6
7
|
Thread thread = new Thread(() => ThreadStartingPointWithPara("hello"));thread.Start();//线程调用方法private void ThreadStartingPointWithPara(string str){ //下面写一些在线程中处理的方法} |
解决方案之一就是使用WPF的Dispatcher线程模型来修改,BeginInvoke(异步)会立即返回,Invoke(同步)会等执行完后再返回
|
1
2
3
4
5
6
7
8
9
10
|
//同步操作UI线程元素this.Dispatcher.Invoke(new Action(() =>{ //这里进行一些UI上的操作}));//异步操作UI线程元素this.Dispatcher.BeginInvoke(new Action(() =>{ //这里进行一些UI上的操作})); |
同一个变量多线程访问时可能一个线程还没有对这个变量处理完,就被其它线程修改,这个时候就需要同步。
|
1
2
3
4
5
|
private static object o = new object();lock (o){ //把同一时间只能有一个线程访问的数据放这里面} |
转自:https://www.cnblogs.com/microsoft-zh/p/14590736.html
原文:https://www.cnblogs.com/DoNetCShap/p/14772237.html