C# 采用线程重绘图形应该注意的问题。

原文

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

大家都知道J2ME 采用一个线程去获取数据,然后得到数据后更新屏幕是件很容易的事情,

`nhxq1u^3比如

hQ.Pd0P%r$~f3Thread{

7Quk%n+_&gar(K3publicvoidrun(){3GEYE4l`_.wv6?z5P

getData();

^:LE%@5k?-l3repaint();3GEYE6Z+M"W.K6h[3e

}

+ZnLPk/jL)mf3

.\1X`1}"iN3}

T7q(M!vx+Z+ik)U3这样做就OK了3GEYER`8IL8S!I|+jFa

%LQ#LR"FgX3但是这个方法在C#上能成功吗。

dV(],d.G3答案是NO,为什么呢。安装他们的APIs的说法是,采用线程更新屏幕的是应该要用一个委托的方式来执行。

,p~Zy_g&V:Z33GEYEmH"L*T2?i:e

看看我是怎么做的。3GEYE2M?{}VC#O#tqa

|R_a#|R8g3Thread{

GXY0c:~3@^3publicvoidrun(){3GEYElE8apa*u~-a9E\@

getData();3GEYEGQKLb*CI

updateWebBrowser();

+P5?!K;f#m6D#H3}3GEYE}I4\)r&`$Jj1Y

ZY,d%Suw5K3delegatevoidRepaint();3GEYE!g.|Z5}t7f#`�j

D6Ez{y0t3publicvoidrepaint()3GEYEy&Yi1mi*S"C9J$E

{

A[So:?3

7KY%L6OC!Mt3this.webBrowser.repaint();3GEYE*T4C})cVn]

}

H5{^"g/VM3

&kz$^e&b3/**3GEYEb|\$`lh

*更新视图

8I}o&J&t/mW3*/

n*gxphQQ9o3publicvoidupdateWebBrowser()3GEYE:Q-T+P5{4E

{

a6w)V�mo4D0N3//这里是更新屏幕的代码,看各自需求做相应的实现。3GEYE&h:OBm,Ukm2y

}

?GN!~Vm3

7y6m#a-NDa(o3}3GEYE+R!f9AH,@�k"Ky

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

相关推荐