Хорошо, я почти на месте, и мне нужно немного советов, чтобы преодолеть этот горб!Итак, причина, по которой я задал этот вопрос Асинхронный делегат - что такое правильный синтаксис? заключается в том, что я пытаюсь вызвать функцию делегата асинхронно (используя await ...).
Итак,здесь у меня есть класс, который использует библиотеку, которая принимает делегата.Библиотека вызывает делегата при срабатывании.Это выглядит примерно так.
Example.Question.Base{
public static class Consumer{
private delegate bool Redo();
private static Redo callbackFunction;
public static async Task<T> Go(){
// Do some stuff ...
// now I want to set up my delegate so this library
// I'm using can call back my delgate function when
// an event occurs that it manages
callbackFunction = NonAsync;
SomeLibrary someLibrary = new SomeLibary();
await someLibrary.SomeMethod(callbackFunction);
}
public static bool NonAsync()
{
// Do some work ...
return false;
}
}
// so now the callbackFunction is called from
// the libary when some event occurs. So that
// means the actual method "NonAsync()" is called!
}
Логика в библиотеке, которая вызывает этот delgate, выглядит следующим образом
Example.Question.Library{
public ...{
public ... SomeMethod(Delegate func){
func.DynamicInvoke();
}
}
}
, это прекрасно работает.Мне нужно иметь возможность асинхронно вызывать Делегата из библиотеки.
нужна помощь, чтобы туда добраться
Так что я хочу что-то похожее на это ...
... из библиотеки, которая вызывает делегата ...
public ... SomeMethod(Delegate func){
await func.DynamicInvoke();
}
... от потребителя библиотеки, которая определяет делегата ...
Example.Question.Base{
public static class Consumer{
// ...
public static async Task<T> Go(){
// ...
callbackFunction = await Async;
// ...
}
public static async Task<bool> Async()
{
// Do some work ...
return await Task.FromResult<bool>(false);
}
}
}
Но проблемая получаю сообщение об ошибке компилятора: «Не удается дождаться группы методов»