I have the following program that uses async operation but the returning IAsyncResult.AsyncState is always null.
What I'm doing wrong?
public interface ICommandService
{
[OperationContract(AsyncPattern = true)]
IAsyncResult BeginLogin(string userName, string password, AsyncCallback callback, object state);
string EndLogin(IAsyncResult result);
}
class CommandService : ICommandService
{
public string Login(string userName, string password)
{
return "dorcohen";
}
private Func<string, string, string> _LoginDelgateObject;
public IAsyncResult BeginLogin(string userName, string password, AsyncCallback callback, object state)
{
Func<string, string, string> function = new Func<string, string, string>(Login);
_LoginDelgateObject = function;
IAsyncResult result = function.BeginInvoke(userName, password, callback, state);
return result;
}
public string EndLogin(IAsyncResult result)
{
CommandService test = result.AsyncState as CommandService;
return test._LoginDelgateObject.EndInvoke(result);
}
}
cant you use the following code in the BeginLogin
method
function.BeginInvoke(userName, password, callback, this);