我只是一個初學者,「ParameterizedThreadStart」接受單個對象作爲參數。線程處理參數
是否有任何其他代表簽名允許我
(1)通過對螺紋PARAMS(參數變量數)?
(2)支持列表等通用參數?
我只是一個初學者,「ParameterizedThreadStart」接受單個對象作爲參數。線程處理參數
是否有任何其他代表簽名允許我
(1)通過對螺紋PARAMS(參數變量數)?
(2)支持列表等通用參數?
你可以做你想做與單個對象什麼。只要定義一個類來包裝你感興趣的參數:
class ThreadState
{
public ThreadState()
{
}
public string Name
{
get;
set;
}
public int Age
{
get;
set;
}
}
// ...
ParameterizedThreadStart start = delegate(object objThreadState)
{
// cast to your actual object type
ThreadState state = (ThreadState)objThreadState;
// ... now do anything you want with it ...
};
您可以使用Delegate.BeginInvoke和EndInvoke,傳遞任何參數,你想
delegate long MyFuncDelegate(int N);
MyFuncDelegate cpn = new MyFuncDelegate(MyFunc);
IAsyncResult ar = cpn.BeginInvoke(3, null, null);
// Do some stuff
while(!ar.IsCompleted)
{
// Do some stuff
}
// we now know that the call is
// complete as IsCompleted has
// returned true
long answer = cpn.EndInvoke(ar);
順便說一下,仿製藥,是非常有用的定義類,如多爾(T1的),杜爾(中T1,T2)等,它們具有字段例如V1作爲T1,V2作爲T2等,以及作爲動作的(T1,T2)等,以及稱爲動作(V1,V2)和靜態工廠方法的單一方法Exec(void)等。這使得組裝一個MethodInvoker非常容易,它可以用適當的參數調用函數,即使在VS2005中也是如此。
或者只傳遞一個對象數組。 – 2009-10-10 17:47:50
是的,你也可以傳遞一個數組,這個數組更加輕量級,但是「更安全」。 – bobbymcr 2009-10-10 18:08:58
真的幫了我很多。謝謝。 – user186973 2009-10-10 18:30:10