回覆列表
-
1 # 水母星人
-
2 # pfsiu2647
invoke這個方法就是呼叫委託,MSDN上的解譯是:Control.Invoke 方法在擁有此控制元件的基礎視窗控制代碼的執行緒上執行委託。 過載列表--------------------------------------------------------------------------------名稱 說明 Control.Invoke (Delegate) 在擁有此控制元件的基礎視窗控制代碼的執行緒上執行指定的委託。 由 .NET Compact Framework 支援。 Control.Invoke (Delegate, Object[]) 在擁有控制元件的基礎視窗控制代碼的執行緒上,用指定的引數列表執行指定委託。 由 .NET Compact Framework 支援。 具體參考請看:http://msdn.microsoft.com/zh-cn/library/30s4t80c(v=VS.80).aspx我的理解就是,用invoke呼叫用的委託方法,是被Controller控制的,如果Controller有錯誤,invoke就會報錯,然後終止呼叫的委託,就和一個程序和線的關係差不多
自己測試了一下,使用反射機制,可以呼叫類裡面的靜態方法,但是沒有找到好的辦法呼叫泛型靜態方法,自己測試的程式碼如下:
class Person
{
public static string Fun(string value)
{
Console.WriteLine("ttt");
return value;
}
}
class Program
{
static void Main(string[] args)
{
//使用反射機制得到指定類裡面的方法
Type t = typeof(Person);
MethodInfo info = t.GetMethod("Fun");
Console.WriteLine(info.Name);
Person p = new Person();
//使用Invoke方法進行回撥
object obj= info.Invoke(null,new string[] {"zhangsan"});
//列印的結果是"zhangsan",即呼叫方法的返回值
Console.WriteLine(obj);
Console.ReadLine();
}
}
到網上查了一下,也查不到相關的內容,希望上面的程式碼能幫到你.