我正在开发 WCF 客户端应用程序,并且遇到了等待/异步模式的困难。似乎这条线: await client.LongOperationAsync(); 总是阻塞。据我了解,线程应该退出并继续到 Main() 方法,然后在异步方法完成时返回,也许我错了。
下面代码的输出是(总是):
Test() 启动
Test() 错误
*
*
*
...
Test() 方法总是在上下文返回到 main之前完成。任何想法将不胜感激。
static void Main(string[] args)
{
Program p = new Program();
p.Test();
while (true)
{
Console.WriteLine("*");
Thread.Sleep(500);
}
}
private async Task Test()
{
Console.WriteLine("Test() started");
try
{
MySoapClient client = new MySoapClient(
new BasicHttpBinding(new BasicHttpSecurityMode()),
new EndpointAddress("http://badaddress"));
await client.LongOperationAsync();
Console.WriteLine("Test() success");
}
catch (Exception)
{
Console.WriteLine("Test() error");
return;
}
Console.WriteLine("Test() end successfully");
}