Citat:
Ursprungligen postat av
Sane?
I sådant fall borde du läsa detta;
https://msdn.microsoft.com/en-us/lib...v=vs.110).aspx
Gör man som i ditt kodexempel finns det inget sätt för anropande system att veta om operationen gick bra eller inte.
Jag blir inte klok på informationen som finns på MSDN:
Jag har nu skapat två metoder(BeginLoginAccount resp. EndLoginAccount)
Såhär ser deklarationen av metoderna i interfacet:
Kod:
[OperationContract]
bool LoginAccount(string mailAddress, string password);
[OperationContract(AsyncPattern = true)]
IAsyncResult BeginLoginAccount(string mailAddress, string password, AsyncCallback callback, object asyncState);
bool EndLoginAccount(IAsyncResult result);
I klassen som implementerar interfacet ser det ut såhär:
Kod:
public IAsyncResult BeginLoginAccount(string mailAddress, string password, AsyncCallback callback, object asyncState)
{
bool returnedVal = false;
try
{
returnedVal = LoginAccount(mailAddress, password);
}
catch (NullReferenceException nre)
{
CustomError ce = new CustomError("Invalid input values");
throw new FaultException<CustomError>(ce, ce.ToString());
}
return new CompletedAsyncResult<bool>(returnedVal);
}
public bool EndLoginAccount(IAsyncResult result)
{
CompletedAsyncResult<bool> asyncRes = result as CompletedAsyncResult<bool>;
return asyncRes.Data;
}
Nu undrar jag hur jag anropar LoginAccount asynkront?
När jag startar WCF test client syns inte metoderna i listan på tillgängliga metoder att "invoka".
Om jag har förstått det hela rätt så är detta eventdriven asynkroniskt anrop så jag misstänker att jag behöver skapa delegat och events? Känns som msdn artikeln inte är fullständig.
Tack på förhand.