色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

WinForm二三事(二)

監(jiān)視消息循環(huán)

上一篇文章中,我們討論了消息循環(huán)是響應(yīng)用戶輸入的根本,還提到了在WinForm中執(zhí)行耗時操作是因為這個耗時操作與消息循環(huán)在同一個UI Thread上,導(dǎo)致不能處理用戶的后續(xù)響應(yīng),造成程序假死。除此之外,還說到了Form中的WndProc方法,說這個方法就是Win32時代那個處理消息的方法的.NET版。

那么今天這篇文章我們就來編個小程序來模擬一下這個耗時操作,看看是不是如上一篇所說:耗時操作造成消息循環(huán)的臨時中斷不能響應(yīng)用戶后續(xù)輸入。

程序很簡單,就是一個簡單的窗體,上面放置一個按鈕,按鈕里有一個Thread.Sleep(50*1000)模擬耗時操作:

public partial class LongTimeForm : Form
{
    public LongTimeForm()
    {
        InitializeComponent();
        Debug.Listeners.Add(new ConsoleTraceListener());
    }
 
    private void btnLongTime_Click(object sender, EventArgs e)
    {
        Thread.Sleep(50 * 1000);
    }
 
    //既然這個WndProc是Win32中處理消息的方法的.NET版,那么我們應(yīng)該在這里可以監(jiān)視到所有用戶操作的“消息”
    protected override void WndProc(ref Message m)
    {
        Debug.WriteLine(m.Msg.ToString());
        base.WndProc(ref m);
    }
}

NET技術(shù)WinForm二三事(二),轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 申扎县| 察雅县| 奉节县| 安平县| 体育| 布拖县| 右玉县| 杭锦旗| 辽源市| 通渭县| 友谊县| 麦盖提县| 左云县| 沧源| 泰宁县| 金平| 浙江省| 织金县| 厦门市| 三亚市| 黔西| 鲜城| 蒙阴县| 平度市| 锦屏县| 盐津县| 江安县| 嘉鱼县| 汕尾市| 通榆县| 三门县| 洛阳市| 辛集市| 三江| 日喀则市| 从化市| 淳化县| 唐河县| 眉山市| 博兴县| 蚌埠市|