在winform中的button,點(diǎn)擊后先設(shè)置enable為false,中間處理其他,最后設(shè)置enable為true但是執(zhí)行過(guò)程中再點(diǎn)擊button,依然可以執(zhí)行clickprivate void button1_Click(object sender, EventArgs e){button1.Enabled = false;textBox1.Text += "在執(zhí)行中········";//process somethingtextBox1.Text += "執(zhí)行完畢!";button1.Enabled= true;}這問(wèn)題怎么解決
2 回答

肥皂起泡泡
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超6個(gè)贊
這是因?yàn)橄C(jī)制引起的問(wèn)題,如果處理click事件的函數(shù)執(zhí)行時(shí)間過(guò)長(zhǎng),那么下一次點(diǎn)擊的消息會(huì)存入消息隊(duì)列,等到當(dāng)前click處理函數(shù)退出以后,再?gòu)南㈥?duì)列獲取此消息執(zhí)行。你可以使用我提供的代碼,多次點(diǎn)擊button,你會(huì)看到多次的重復(fù)執(zhí)行。
解決此問(wèn)題的辦法是盡可能的讓click事件處理函數(shù)的執(zhí)行時(shí)間縮短,更嚴(yán)謹(jǐn)?shù)淖龇ㄊ亲约涸O(shè)置同步事件,忽略無(wú)效的點(diǎn)擊。

GCT1015
TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個(gè)贊
沒(méi)啥好說(shuō)的:
把 調(diào)用 webservice 改成異步調(diào)用
完成后回調(diào) 執(zhí)行
button1.Enabled= true;
- 2 回答
- 0 關(guān)注
- 982 瀏覽
添加回答
舉報(bào)
0/150
提交
取消