91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

Winform WndProc與多線程交互

小樊
82
2024-08-23 18:26:31
欄目: 智能運維

在Winform中,WndProc是窗口過程,負責處理窗口消息。在多線程中,如果需要在其他線程中更新UI控件,需要通過Invoke方法來在UI線程中執行相應的代碼。下面是一個示例代碼,演示了如何在多線程中更新UI控件:

using System;
using System.Threading;
using System.Windows.Forms;

namespace MultiThreadWinform
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void UpdateLabel(string text)
        {
            if (label1.InvokeRequired)
            {
                label1.Invoke(new Action<string>(UpdateLabel), text);
            }
            else
            {
                label1.Text = text;
            }
        }

        protected override void WndProc(ref Message m)
        {
            const int WM_USER = 0x0400;
            const int WM_UPDATE_LABEL = WM_USER + 1;

            switch (m.Msg)
            {
                case WM_UPDATE_LABEL:
                    UpdateLabel("Update by WndProc");
                    break;
            }

            base.WndProc(ref m);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Thread thread = new Thread(() =>
            {
                Thread.Sleep(2000);
                this.BeginInvoke(new Action(() =>
                {
                    UpdateLabel("Update by thread");
                }));

                this.Invoke(new Action(() =>
                {
                    this.BeginInvoke(new Action(() =>
                    {
                        this.WndProc(ref Message.Create(this.Handle, WM_UPDATE_LABEL, IntPtr.Zero, IntPtr.Zero));
                    }));
                }));
            });
            thread.Start();
        }
    }
}

在上面的示例代碼中,通過Override WndProc方法,定義了一個自定義的窗口消息WM_UPDATE_LABEL,當收到這個消息時,會調用UpdateLabel方法更新UI控件。在button1_Click事件中,啟動一個新線程,在新線程中通過Invoke和BeginInvoke方法更新UI控件,并向WndProc發送自定義消息來更新UI控件。這樣就實現了在多線程中更新UI控件的功能。

0
璧山县| 定兴县| 贵州省| 安西县| 泾源县| 辽宁省| 平罗县| 南溪县| 仙游县| 黔南| 洛隆县| 宁陵县| 建平县| 财经| 云梦县| 高碑店市| 花莲县| 婺源县| 青河县| 永吉县| 灌云县| 四川省| 云龙县| 凤翔县| 海晏县| 龙陵县| 陕西省| 大方县| 邵东县| 巩义市| 孙吴县| 曲周县| 手机| 合川市| 江源县| 玉龙| 射洪县| 右玉县| 晋宁县| 科技| 利川市|