作者reptile0426 ( )
看板C_Sharp
标题Re: [问题] delegate.BeginInvoke跟control.invoke …
时间Thu Nov 22 00:45:58 2007
首先先感谢toki大的解说,他讲的是control.BeginInvoke的观念
後来我自己又看了一下两者的差别
当你的其他thread (不是UI thread)要对UI thread的控制项做改变
就必须呼叫control.BeginInvoke来做
而delegate.BeginInvoke在我的理解看来
当你为了做某件事且同时显示某些状态在视窗上,
若你用ui thread来做,那麽运算的过程式不能同时显示的,因为他还在算东西
必须等到运算完,才能做出显示,这样失去我们原本设计这视窗程式意义
所以用delegate.BeginInvoke来呼叫要运算的function
呼叫後他会开一个thread来做这件事,所以ui thread不会被占用
这样就可以更新UI画面了
而上一篇MSDN的例子,他是先呼叫了delegate.BeginInvoke来处理运算
运算过程中 运算进度会不断增加 并且想把进度显示在progressbar上
而这更新progressbar并显示就是UI thread要做的,
而进度只有运算的那个function知道自己算到哪了 他在另一个thread上
这时就接到toki大讲的了
我想大概就是这样吧
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 163.25.101.28