У меня запущена служба WCF, я добавил ссылку на службу с помощью Добавить ссылку на службу в обозревателе решений и установил флажок для создания асинхронных операций.
Мой звонок работает нормально, у меня есть двухсторонний канал, который сообщает о некоторых событиях с сервера, и я получаю события. Однако, когда асинхронная задача заканчивается в моем обработчике обратного вызова, я получаю ошибку Unable to cast object of type 'SendAsyncResult' to type 'System.Runtime.Remoting.Messaging.AsyncResult'.
Код, который вызывает метод.
DatabaseManagement.DatabaseManagementClient d = new DatabaseManagement.DatabaseManagementClient(new InstanceContext(new DatabaseManagementCallback()));
d.Open();
d.BeginCreateDatabase("", "PreConfSA", "_test", new AsyncCallback(BeginCreateDatabaseCallback), null);
Асинхронный обратный вызов
static void BeginCreateDatabaseCallback(IAsyncResult ar)
{
AsyncResult result = (AsyncResult)ar; //Execption happens here
DatabaseManagement.DatabaseManagementClient caller = (DatabaseManagement.DatabaseManagementClient)result.AsyncDelegate;
Console.WriteLine(caller.EndCreateDatabase(ar));
DatabaseManagement.AccountInfo ai = new DatabaseManagement.AccountInfo();
//set up ai here
Console.WriteLine(caller.UpdateInfo("", "_test", ai));
}
Сведения об исполнении
System.InvalidCastException was unhandled by user code
Message=Unable to cast object of type 'SendAsyncResult' to type 'System.Runtime.Remoting.Messaging.AsyncResult'.
Source=Sandbox Console
StackTrace:
at Sandbox_Console.Program.BeginCreateDatabaseCallback(IAsyncResult ar) in E:\Visual Studio 2010\Projects\Sandbox Console\Program.cs:line 26
at System.ServiceModel.AsyncResult.Complete(Boolean completedSynchronously)
InnerException:
Мне действительно не нужен результат из EndCreateDatabase, но везде, где я читаю, говорится, что вы должны вызывать EndYouFunctionHere (), иначе произойдут плохие вещи.
Есть рекомендации?