WPF多线程使用示例
概况
- 启动不带参数线程的方法
- 启动带参数线程的方法
- 线程更新UI
- 线程锁同步共享数据
启动不带参数线程的方法
第一种快速启动
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) { //下面写一些在线程中处理的方法 } |
线程更新UI
解决方案之一就是使用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
本文来自博客园,作者:jevan,转载请注明原文链接:https://www.cnblogs.com/DoNetCShap/p/14772237.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端