事件处理程序未触发以完成对WCF服务的异步调用

时间:2011-11-23 14:58:07

标签: c# wcf

我最近设法在IIS中运行WCF服务。我创建了一个简单的控制台应用程序来测试它我确实单击了生成异步调用的选项,当我创建服务客户端的实例时,我有[FunctionName] Asynch方法和[FunctionName]已完成的事件处理程序。

问题是事件处理程序永远不会触发。我设置它们并在其中放置断点。破发点永远不会开火。我知道调用了最初的异步方法,但没有完成。

该服务位于IIS中,并已作为服务参考添加到我的项目中。

这是客户端的代码,虽然问题可能不存在:

clt.SubmitEvalCompleted += (o, e) => {
            var sender = o as EvalServiceClient;

            Console.WriteLine("Submit completed");
            sender.GetEvalsAsync();
        };

        clt.GetEvalsCompleted += (o, e) => { 

            var listOfEvals = e.Result;

            foreach (var eval in listOfEvals)
            {
                Console.WriteLine("Eval: " + eval.ID + " comments: " + eval.Comments);
            }
        };

        Eval evale = new Eval { Comments = "Comment", Submitter = "Me" };
        clt.SubmitEval( evale );
        clt.GetEvals();

感谢阅读!

1 个答案:

答案 0 :(得分:2)

只有在调用方法的异步版本(SubmitEvalAsync,GetEvalsAsync)时才会调用事件。如果您调用同步版本,您将立即获得结果。