社区
C#
帖子详情
invoke 界面冻结问题
he717
2009-09-09 08:40:19
BeginInvoke可以异步执行,窗口不冻结。而Invoke则冻结窗口,这可如何是好。我是做移动开发的,.net cf里BeginInvoke不能用,在网上看了一个UISafeInvoker的文章,但没找到源码。望高手指点!
...全文
173
11
打赏
收藏
invoke 界面冻结问题
BeginInvoke可以异步执行,窗口不冻结。而Invoke则冻结窗口,这可如何是好。我是做移动开发的,.net cf里BeginInvoke不能用,在网上看了一个UISafeInvoker的文章,但没找到源码。望高手指点!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
he717
2009-09-09
打赏
举报
回复
BeginInvoke在cf里可以“点儿”出来,但执行就报错。所以不能用。
我用Invoke是在一个线程里,执行的过程是要在界面上画很多的东西,大概需要好几秒的时间。这样窗口就冻结了好几秒。但是,如果不用Invoke,在线程里画图就会报错的。
现在唯一的办法就是在绘图过程中加Application.DoEvents()。不过这种方法好像有些牵强。是不是要等cf升级了才能支持呀,郁闷中。。。
longmencdw
2009-09-09
打赏
举报
回复
BeginInvoke在.net cf中是支持的吧?
zhujiechang
2009-09-09
打赏
举报
回复
invoke表示要回到调用invoke的线程去执行你的函数,如果你使用ui对象进行invoke,拿UI线程就会停下来做那个函数的事情,你的函数应该放在其他线程中执行,invoke在UI线程中的应该仅仅是需要呈现的结果信息函数而已。
天乐
2009-09-09
打赏
举报
回复
支持线程就可以啊,BeginInvoke也只是一种线程的异步执行模式罢了,可以自己实现
love_cloud
2009-09-09
打赏
举报
回复
mark
tigerii
2009-09-09
打赏
举报
回复
In main thread, you must use Application.DoEvents() to waiting the result of sub-threads when you call invoke in sub-threads. otherwise you will hang the UI.
沐浴晨光啊
2009-09-09
打赏
举报
回复
Invoke的委托当中的实现放在一个子线程里去做就可以了
mdmzl
2009-09-09
打赏
举报
回复
学习.
边城的刀声
2009-09-09
打赏
举报
回复
对,用线程加事件
tangyong12
2009-09-09
打赏
举报
回复
放在线程里试试
tigerii
2009-09-09
打赏
举报
回复
Application.DoEvents()是必须的,不是牵强,因为Invoke就是在UI线程内执行,如果不用Application.DoEvents(),UI线程的消息循环就停止了。
Winform利用多线程、委托、
invoke
解决
界面
卡死
问题
本文介绍在WinForm应用程序中,通过线程和委托实现
界面
无卡顿的实时更新,解决长时间运行任务导致的
界面
冻结
问题
。采用
Invoke
方法与自定义委托,确保
界面
元素在主线程中安全更新。
Invoke
做了什么?
本文深入分析了在WPF应用中,UI线程进行繁忙操作导致的UI
冻结
问题
,并通过实例展示了如何利用Dispatcher.
Invoke
和Begin
Invoke
方法实现后台线程与UI线程的高效交互,确保用户
界面
的实时更新。
别再让C#跨线程访问控件报错!用
Invoke
和Begin
Invoke
的正确姿势(附WinForms/WPF对比)
本文深入解析C#中WinForms与WPF跨线程访问UI控件的底层原理(线程亲和性、消息泵机制),系统讲解
Invoke
/Begin
Invoke
及Dispatcher的正确用法,对比二者线程模型差异,并涵盖async/await、IProgress
、批量更新、自定义同步上下文等现代最佳实践,帮助开发者规避死锁、
界面
冻结
、状态不一致等典型
问题
。
C# terminate thread with stop variable
本文介绍了一个使用C#实现的简单示例,演示如何在一个Windows Forms应用程序中利用后台线程更新用户
界面
元素,如ListBox。通过设置线程为后台线程并使用
Invoke
方法安全地更新UI,避免了因长时间运行操作导致的
界面
冻结
问题
。
别再混淆了!用5个真实案例讲透WPF Dispatcher的同步/异步调用
本文通过5个真实开发案例深入剖析WPF中Dispatcher.
Invoke
与Begin
Invoke
的适用场景与陷阱,涵盖
界面
冻结
、显示延迟、耗时计算假死、批量进度更新及组合调用死锁等核心
问题
,并给出基于async/await、IProgress、DispatcherTimer和优先级调度的最佳实践,强调线程安全、UI响应性和性能平衡。
C#
111,129
社区成员
642,541
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章