饶荣庆 -- 您今天UCWEB了吗?--http://www.ucweb.com

3G 手机开发网

   :: 首页 :: 联系 :: 聚合  :: 管理
  99 Posts :: 1 Stories :: 219 Comments :: 0 Trackbacks

原文

http://www.3geye.net/?3/viewspace-3350

 

大家都知道J2ME 采用一个线程去获取数据,然后得到数据后更新屏幕是件很容易的事情,
` n hxq1u^3 比如
h Q.Pd0P%r$~f3 Thread{
7Quk%n+_&gar(K3 public void run(){3GEYE4l`_.w v6?z5P
getData();
^:LE%@5k?-l3 repaint();3GEYE6Z+M"W.K6h[3e
}
+ZnLPk/jL)m f3
.\1X `1}"iN3 }
T7q(M!vx+Z+i k)U3 这样做就OK了3GEYER`8IL8S!I|+jFa

%L Q#LR"FgX3 但是这个方法在C#上能成功吗。
dV(],d.G3 答案是NO,为什么呢。安装他们的APIs的说法是,采用线程更新屏幕的是应该要用一个委托的方式来执行。
,p~Zy_g&V:Z3 3GEYEmH"L*T2?i:e
看看我是怎么做的。3GEYE2M?{} VC#O#tqa

|R_a#|R8g3 Thread{
GXY0c:~3@^3 public void run(){3GEYEl E8ap a*u~-a9E\@
getData();3GEYEGQKLb*CI
updateWebBrowser();
+P5?!K;f#m6D#H3 }3GEYE}I4\)r&`$Jj1Y

ZY,d%S uw5K3 delegate void Repaint();3GEYE!g.|Z5}t7f#`�j

D6Ez{ y0t3        public void repaint()3GEYEy&Yi1m i*S"C9J$E
       {
A [So:?3
7KY%L6O C!M t3            this.webBrowser.repaint();3GEYE*T4C})c V n]
       }
H5{^"g/VM3
&kz$^e&b3        /**3GEYEb |\$` lh
        * 更新视图
8I}o&J&t/mW3         */
n*gx phQQ9o3        public void updateWebBrowser()3GEYE:Q-T+P5{4E
       {
a6w)V�mo4D0N3           //这里是更新屏幕的代码,看各自需求做相应的实现。3GEYE&h:OBm,Ukm2y
       }
? GN!~Vm3
7y6m#a-ND a(o3 }3GEYE+R!f9A H,@�k"K y

-YgB'B/U |3 上面就是C#的处理方式。应该也是可以理解的



爬虫工作室 -- 专业的手机软件开发工作室
3G视线 -- 专注手机软件开发
posted on 2008-04-11 12:45 3G工作室 阅读(1441) 评论(1)  编辑  收藏

Feedback

# re: C# 采用线程重绘图形应该注意的问题。 2008-12-04 00:28 yeml
嗯,是的,。net2.0对线程间操作对象有了安全性限制,1.1的时候好像还没有这个要求
对于winform的control,要调用对象创建者的invoke方法来更新
(*^__^*) 嘻嘻……,我是yeml~~~~  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问