好的,請不要爲了這個問題而讓我失望。C#將參數化方法的名稱傳遞給變量
// using System.Threading;
private void startThread()
{
Thread t = new Thread(ParameterizedThreadStart(setOutputBinaryWorker));
t.Start();
}
由於setOutputBinaryWorker是一個實際的現有方法,所以此工作正常。不過,我正在尋找一種方法將函數名稱作爲變量傳遞給startThread函數。
感謝我有限的C#經驗,我懷疑它有可能,但似乎無法弄清楚如何。我可以想像它應該是這樣的:
// using System.Threading;
private void startThread(??datatype?? func)
{
Thread t = new Thread(ParameterizedThreadStart(func));
t.Start();
}
但我找不出數據類型應該是什麼(使用問號)。 現在,在調試時,傳遞函數名會彈出
System.Object的虛空,setOutputBinaryWorker
它只是不給我太多去。可以創建這些嗎?嘗試將參數作爲(對象)不起作用。
背後的主要想法是試驗一個安全的gui線程以正確的方式寫入UI元素。 現在,我已經得到了這部分,使用委託方法,它只是花花公子。但是,切換到當前的方法(使方法名稱變量),我完全失去了。 如果有人知道替代方案,更好,或至少是工作解決方案,我願意接受建議,時間很長。
在此先感謝您的努力。
你爲什麼不傳遞一個ParameterizedThreadStart?另外:對於ParameterizedThreadStart版本,您是否需要將值傳遞給Start? –
感謝您的快速回復,是的,我確實。在迴應你的問題:這將無法正常工作,我需要傳遞函數名稱,因爲它將被包裝在外部DLL中。 – Digitalis
你會用這種方式調用什麼樣的方法?他們是否具有相同的簽名和返回值? –