我看着Control.BeginInvoke
方法,我並沒有獲得什麼意思時,它說:理解困難C#方法描述
執行一個委託異步,控制的 基礎句柄創建的線程上上。
什麼是control's underlying handle
?它有什麼作用?
我看着Control.BeginInvoke
方法,我並沒有獲得什麼意思時,它說:理解困難C#方法描述
執行一個委託異步,控制的 基礎句柄創建的線程上上。
什麼是control's underlying handle
?它有什麼作用?
控制具有「線程親和力」 - 這意味着有一個需求它們僅直接操縱(或甚至檢查,除少數特定性質如InvokeRequired
)通過創建它們的螺紋(通常稱爲UI線程)。 句柄只是OS控件和.NET控件之間的抽象。
這實際上做的是在windows消息循環中放置一條消息,該消息由UI線程(擁有該控件)拾取,導致您的委託在UI線程上被調用。這意味着它可以與控制器交談。如果您當前處於後臺線程(可能是異步回調或BackgroundWorker
),並且需要更新UI,這非常有用。
Windows窗體控件是在特定線程上創建的,並不適用於多線程環境。微軟這樣做是爲了讓控件只能從創建它的線程中操作,從而強制控件上的單線程環境。
控件上的BeginInvoke調用在該線程上提供給它的代碼。
非常感謝+1 – Caner
看到這個http://stackoverflow.com/questions/229554/whats-the-difference-between-invoke-and-begininvoke – V4Vendetta