我正在开发WCF客户端应用程序,遇到了await/async模式的困难。似乎这一行代码:
await client.LongOperationAsync();
总是阻塞。我理解的是,线程应该退出并继续执行Main()方法,然后在异步方法完成时返回。也许我理解有误。
以下代码的输出结果始终为: Test() started
Test() error
*
*
*
...
无论何时,Test()方法在上下文返回到main方法之前都会完成。非常感谢您的任何想法。
以下代码的输出结果始终为: Test() started
Test() error
*
*
*
...
无论何时,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");
}