後臺執行緒呼叫介面執行緒顯示
阿新 • • 發佈:2018-11-30
使用委託呼叫的三個步驟:
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; }