close

繼上一篇:[程式][WinForm][C#] backgroundWorker執行緒 如何修改WinForm主執行緒上控制元件的值?

使用 System.Windows.Forms.MethodInvoker 跨執行緒 修改主執行緒的值;

但「public delegate void MethodInvoker();」不能傳參數進去。

找了許久,統整出以下可運行code的結論:

namespace YourProjName
{
    public partial class YourFormName
    {
        delegate void DelegateMethod1( string strVal );
        DelegateMethod1 Write_SysMsgTo_msgTextBox = null;

        public YourFormName()
        {
            // ...
            
            Write_SysMsgTo_msgTextBox = new DelegateMethod1( delegate ( string strVal ) {
                massage_textBox.Text = strVal ;
            } );
        }

        // ...

        private void backgroundWorker1_DoWork( object sender, DoWorkEventArgs e ) {
            this.Invoke( Write_SysMsgTo_msgTextBox, "message text" );
        }
    }
}

參考:[轉載]C# Invoke的用法 @ 我的程式人生之心路歷程 :: 隨意窩 Xuite日誌
Stack Overflow
Blog
MSDN
...
(多到不可考)
 

arrow
arrow
    創作者介紹
    創作者 Robert 的頭像
    Robert

    Robert 的部落格

    Robert 發表在 痞客邦 留言(0) 人氣()