异步回调"Async End使用来自不同Begin方法的IAsyncResult调用.参数名称:result"

1 wcf asynchronous

我无法弄清楚为什么会这样.

我有一个正常的连接方法:

public void Connect()
{
    _client.BeginConnect(new AsyncCallback(this.ConnectCallback), _client);
}

public void ConnectCallback(IAsyncResult asyncResult)
{
    ServerClient callback = null;

        callback = (ServerClient)asyncResult.AsyncState;
        callback.EndConnect(asyncResult);

        Program.IMMainForm.BeginInvoke(new frmMain.ConnectionEstablishedNotification(Program.IMMainForm.ConnectionEstablished));
Run Code Online (Sandbox Code Playgroud)

这完全没问题.我几乎复制并粘贴了我的Send方法的代码:

public void Send(string code, string data)
{
    _client.BeginSendToServer((code + data), new AsyncCallback(this.SendCallback), _client);
}


public void SendCallback(IAsyncResult asyncResult)
{
    ServerClient callback = null;

        callback = (ServerClient)asyncResult.AsyncState;
        callback.EndConnect(asyncResult);
}
Run Code Online (Sandbox Code Playgroud)

但是,它在EndConnect行上出错,并带有错误

"Async End使用来自不同Begin方法的IAsyncResult调用.参数名称:结果"

mscorlib.dll中发生了'System.ArgumentException'类型的第一次机会异常

我不是100%处于异步的东西,所以有什么明显的我做错了吗?

Ben*_*n M 8

你应该打电话EndSendToServer,而不是EndConnect.

生成的异步方法BeginEnd前缀配对; 你用一种方法开始异步操作,然后用另一种方法结束.