Estoy implementando una interfaz que requiere implementaciones de los métodos BeginDoSomething
y EndDoSomething
. Sin embargo, mi DoSomething
no es realmente de larga ejecución. Por simplicidad asumen DoSomething
sólo compara dos variables y la de regreso si a> bCómo crear un IAsyncResult que se completa inmediatamente?
Así que mi BeginDoSomething debería ser como:
protected override IAsyncResult BeginDoSomething(int a, int b, AsyncCallback callback, object state)
{
bool returnValue = a > b;
return ...; //what should I return here?
//The method actually already completed and I don't need to wait for anything
}
No sé lo que he de volver. Solo implemento BeginDoSomething
porque tengo que hacerlo, no porque mi método sea de larga ejecución. ¿Debo implementar mi propio IAsyncResult
? ¿Ya hay una implementación en las bibliotecas .NET?
No es realmente rápido, pero es difícil discutir con la simplicidad. Omita returnValue. No veo el error –
¿qué debería estar en el 'EndDoSomething' entonces? Lamento que soy muy nuevo en la programación asincrónica –
en End * sería lo mismo que func.BeginInvoke: IAsyncResult, por lo que de hecho está delegando la responsabilidad a la implementación de Delegate. – Henrik