1. 程式人生 > >c#winform跨執行緒操作控制元件的一種方法,InvokeRequired

c#winform跨執行緒操作控制元件的一種方法,InvokeRequired

  在winform裡面如果有建立新執行緒的話,線上程裡面直接操作控制元件或修改控制元件的屬性是不允許的,雖然有辦法讓程式執行時忽略跨執行緒可能產生的問題,從而解決;但是從科學的角度看,該辦法並不可取,所以我就用了InvokeRequired的辦法解決跨執行緒操作問題。

  先上程式碼

if (this.InvokeRequired)
{
    this.Invoke(new MethodInvoker(() => 
    { 
        //你想要操作的內容
        //doing();
     }));
}
else
{
  //你想要操作的內容
  //doing();
}

就這樣,如果操作的控制元件不是執行緒裡面生成的,就會進入到this.InvokeRequired裡面。這樣就可以解決衝突。

原文c# InvokeRequired 解決跨執行緒訪問UI控制元件的問題