1. 程式人生 > >後臺執行緒呼叫介面執行緒顯示

後臺執行緒呼叫介面執行緒顯示

使用委託呼叫的三個步驟:
1.定義一個與指定方法的格式相匹配的委託
2.建立自定義委託例項,將方法名作為建構函式的引數
3.通過呼叫呼叫委託物件的Invoke()間接呼叫該方法

可以通過使用內建委託action<> Fun<>委託
Action指向無返回值得方法
Fun指向有返回值的方法

後臺執行緒呼叫主執行緒控制元件的方法
1.

//宣告委託
private delegate bool Process
//宣告事件
public event Process process;
private bool DelegateThing()
{
}
//註冊委託
 process+=new Process(DelegateThing);
 呼叫
 bool result=(bool)this.invoke(process);

2.匿名方法 使用Action或者Func

//	委託的簡單用法
//Action<T>是無返回值的委託,Fun<T>有返回值的委託
 Func<string, bool> processDelegate = new Func<string, bool>((x) => 
        {
            return false;
        });
   bool result=(bool)this.invoke(processDelegate,"null");

3.0個引數無返回值的呼叫可以使用更簡單的方法

this.Invoke(new MethodInvoker(delegate {   }));
this.Invoke(new MethodInvoker(()=>{  }));

4:在前臺執行緒建立函式以便後臺執行緒呼叫:

 private delegate bool SetPos(int ipos, string vinfo);
  public bool SetProgressBar(int ipos,string messags)
        {
            if (this.InvokeRequired)
            {
                SetPos setpos = new SetPos(SetProgressBar);
                this.BeginInvoke(setpos, new object[] { ipos, messags });
            }
            else
            {
               		DoSometing();
            }
            return false;
        }