亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#實現窗體與子線程的交互的方法

2020-01-24 02:36:08
字體:
來源:轉載
供稿:網友

本文實例簡述了C#實現窗體與子線程間通訊的方法,對于C#初學者有一定的借鑒價值。具體方法如下:

一般來說窗體上的UI在默認情況下不允許使用子線程(或者其它非創建控件的UI線程)去控制(這在NET2.0以下是允許的,但是考慮到安全性等問題,從2.0開始就禁止使用這個功能,除非Form的CheckForIllegalCrossThreadCalls=true,不推薦這樣使用)。

那么如何實現C#窗體與子線程的交互呢?具體方法如下:

一、使用Invoke或者BeginInvoke方法:

用一個線程,里邊調用Invoke或者BeginInvoke方法即可:

public partial class Form1 : Form{public void Processing(int num){int answer = 2;Task t = new Task(() =>{for (int i = 3; i <= num; i++){answer *= i;}this.BeginInvoke(new MethodInvoker(() => { Thread.Sleep(3000); MessageBox.Show("Finished!") }));MessageBox.Show("OK");});t.Start();}public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){MessageBox.Show("First!");Processing(10);}}

這里值得注意:
1)BeginInvoke:這里的“異步”并不是針對UI線程,而是說當Control的BeginInvoke在某個子線程中調用時,子線程中BeginInvoke后面的代碼(彈出“Finished”框框)會先執行,然后等到BeginInvoke中的那個委托方法完全執行完畢之后Label才會被賦值。如果改成Invoke,那么“OK”永遠在Invoke的委托代碼徹底執行完畢之后才被執行。
所以BeginInvoke=Invoke(在UI主線程中,所以不建議在主線程中直接這樣調用)

二、線程同步SynchronizedContext:

public partial class Form1 : Form{public void Processing(int num,SynchronizationContext context){int answer = 2;Task t = new Task(() =>{for (int i = 3; i <= num; i++){answer *= i;}SynchronizationContext.SetSynchronizationContext(context);SynchronizationContext.Current.Post((obj) => { Thread.Sleep(3000); MessageBox.Show("Finished"); }, null);MessageBox.Show("Last");});t.Start();}public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){MessageBox.Show("First!");Processing(10,SynchronizationContext.Current);}}

和BeginInvoke、Invoke類似,需要注意:

1)SynchronizationContext:唯獨在UI窗體線程中會自動初始化(button1_Click事件中SynchronizationContext.Current為當前窗體),其它線程與線程要交互,必須通過new SynchronizationContext()實現)。
2)Post方法等同于BeginInvoke作用,Send等同于Invoke作用。

大家如果仔細實驗代碼,還會發現無論何種情況,彈出“Finished”框框總是界面“假死”3秒,是的,證明了以上4個方法都是在UI線程上執行的(只不過是同步或者異步向窗體消息泵發送信息而已)。所以應該“一次性地把數據在子線程中先全部處理干凈(在Invoke,BeginInvoke,Send或者Post前得出結果,寫代碼),然后一次性發送通知給窗體,更新界面即可)。

此外還需要注意:

任何委托(Delegate)也有BeginInvoke方法,它是真正的異步,一旦Invoke一定是開辟一個線程去執行的。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产午夜精品一区理论片飘花| 久久资源免费视频| 亚洲欧美中文在线视频| 欧美精品久久久久久久免费观看| 一本一本久久a久久精品综合小说| 国产有码在线一区二区视频| 亚洲国产精彩中文乱码av| 欧美视频在线视频| 国产97在线视频| 国产精品视频在线播放| 91色视频在线导航| 91久久综合亚洲鲁鲁五月天| 欧美日韩国产色| 欧美激情成人在线视频| 91色在线视频| 日韩视频精品在线| 日韩综合中文字幕| 91欧美精品成人综合在线观看| 日韩极品精品视频免费观看| 久久久噜噜噜久久久| 国产+成+人+亚洲欧洲| 伊人av综合网| 98视频在线噜噜噜国产| 国产999精品久久久| 欧美性猛交xxxx偷拍洗澡| 欧美日韩国产第一页| 欧美床上激情在线观看| 91po在线观看91精品国产性色| 狠狠躁夜夜躁人人爽天天天天97| 亚洲综合在线做性| 日韩一区二区在线视频| 欧美激情影音先锋| 亚洲欧美制服丝袜| 精品视频久久久久久| 亚洲成人精品久久久| 中文字幕精品www乱入免费视频| 国产婷婷成人久久av免费高清| 日韩免费高清在线观看| 久久成人综合视频| 91经典在线视频| 国产精品69久久久久| 久久婷婷国产麻豆91天堂| 亚洲国产美女精品久久久久∴| 8090成年在线看片午夜| 欧美日韩一区二区在线播放| 中文字幕国产精品久久| 欧美性猛交xxxx黑人| 伊人久久久久久久久久久久久| 在线观看中文字幕亚洲| 欧美午夜激情视频| 一区二区欧美在线| 日韩**中文字幕毛片| 国产乱肥老妇国产一区二| 欧美日韩国产综合视频在线观看中文| 欧美在线精品免播放器视频| 欧美资源在线观看| 成人高h视频在线| 国产精品普通话| 神马久久桃色视频| 久久久久久69| 欧美成aaa人片免费看| 日韩中文字幕免费看| 大伊人狠狠躁夜夜躁av一区| 亚洲一区二区在线| 欧美激情视频网| 精品国产一区二区三区久久| 亚洲成人久久久| 伊人伊人伊人久久| 欧美肥婆姓交大片| 国产成人亚洲综合91精品| 成人a级免费视频| 伊人男人综合视频网| 国产精品一区二区三区毛片淫片| 4k岛国日韩精品**专区| 成人444kkkk在线观看| 69视频在线免费观看| 亚洲国产成人久久综合一区| 92国产精品久久久久首页| 久久久精品国产亚洲| 97精品视频在线| 欧美激情第1页| 九九热99久久久国产盗摄| 国产精品女主播视频| 茄子视频成人在线| 成人免费网视频| 日韩视频免费观看| 国产精品∨欧美精品v日韩精品| 亚洲xxxxx电影| 精品国产一区二区三区久久狼5月| 亚洲精品videossex少妇| 日韩经典中文字幕在线观看| 国产精品丝袜白浆摸在线| 91国产在线精品| 欧美电影免费观看网站| 欧美一级片在线播放| 日韩视频在线免费| 91免费国产视频| 日韩欧亚中文在线| 一区二区三区无码高清视频| 最新日韩中文字幕| 亚洲人免费视频| 亚洲男人天堂视频| 69久久夜色精品国产69乱青草| 精品视频www| 亚洲成色www8888| 亚洲免费中文字幕| 成人免费网视频| 久久精品视频免费播放| 亚洲欧美日韩国产中文| 欧美成人中文字幕| 欧美激情综合色综合啪啪五月| 国产亚洲精品久久久久动| 色噜噜久久综合伊人一本| 国产精品午夜一区二区欲梦| 欧美在线观看一区二区三区| 国产精品久久久久久久7电影| 国产午夜精品理论片a级探花| 欧洲亚洲女同hd| 69av在线视频| 久久久久国色av免费观看性色| 国产精品入口免费视| 日韩视频中文字幕| 国产精品黄色影片导航在线观看| 国产精品高潮在线| 美日韩精品视频免费看| 久久精品中文字幕| 欧美精品激情在线| 欧美与黑人午夜性猛交久久久| 九九热这里只有在线精品视| 日韩一区二区福利| 欧美国产高跟鞋裸体秀xxxhd| 国产精品视频xxx| 91久久久久久国产精品| 欧美亚洲成人免费| 国产丝袜精品视频| 亚洲视频在线免费观看| 亚洲一区二区三区毛片| 国产欧美va欧美va香蕉在| 色黄久久久久久| 久久免费视频网| 久久国产精品视频| 亚洲综合最新在线| 伊人av综合网| 九九久久久久久久久激情| 国产成人福利网站| 欧美日韩激情美女| 久久久久99精品久久久久| 国产一区av在线| 日产精品久久久一区二区福利| 欧美最猛性xxxxx亚洲精品| 亚洲精品久久久久久久久久久久| 中文字幕亚洲一区二区三区五十路| 热久久免费视频精品| 国产一区私人高清影院| 久久久久久69| 国产精品狼人色视频一区| 日韩国产高清视频在线| 热久久这里只有| 亚洲aaa激情| 亚洲欧美日韩在线一区| 国产精品久久77777| 国产精品久久久久久av福利软件| 久久国产精品99国产精| 懂色av中文一区二区三区天美|