繼上一篇:[程式][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
...
(多到不可考)
 

文章標籤
全站熱搜
創作者介紹
創作者 Robert 的頭像
Robert

Robert 的部落格

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