0

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);
    }
}
Dor Cohen
  • 16,769
  • 23
  • 93
  • 161

1 Answers1

1

cant you use the following code in the BeginLogin method

function.BeginInvoke(userName, password, callback, this);
Parv Sharma
  • 12,581
  • 4
  • 48
  • 80