2013-07-18 3 views
0

Я хочу передать в void или int/string/bool (который возвращает значение) Динамически так.Как передать делегат в качестве параметра

Delay(MyVoid);//I wont to execute a delay here, after the delay it will execute the the param/void like so... 
public static void MyVoid() 
{ 
    MessageBox.Show("The void has started!"); 
} 
public async Task MyAsyncMethod(void V) 
{ 
    await Task.Delay(2000); 
    V() 
} 

ps, ​​Я пробовал использовать делегаты, но он не позволяет использовать его в качестве параметра.

+1

В будущем, вместо того, чтобы вновь задать вопрос, * пожалуйста * отредактируйте ваш оригинальный вопрос. Если бы я увидел этот вопрос, прежде чем публиковать свой ответ, я бы просто проголосовал за его закрытие. В настоящее время я рекомендую вам удалить другой вопрос. –

ответ

4

Используйте Action делегат выполнить метод, который возвращает недействительным:

public async Task MyAsyncMethod(Action V) 
{ 
    await Task.Delay(2000); 
    V(); 
} 

Или Func<T> для метода, который возвращает некоторое значение

public async Task MyAsyncMethod(Func<int> V) 
{ 
    await Task.Delay(2000); 
    int result = V(); 
} 
+0

Работал хорошо, спасибо! –

+0

Еще один вопрос, как получить публичную задачу async для возврата intager? –

+0

@ DanielJones [Как вернуть значение из задачи] (http://msdn.microsoft.com/en-us/library/dd537613.aspx) –

Смежные вопросы