我有一个控制台应用程序,我想对 WCF 服务进行“即发即弃”调用,然后关闭而不等待响应。它只是应该启动清理工作。这项工作可能需要几个小时才能完成,因此我不希望控制台应用程序保持打开状态并等待它。
我已在合同中的方法中添加了“IsOneWay=true”,但控制台应用程序仍会等待任务完成,然后再执行 client.close() 并退出。
如果我删除了 client.Close(),那么控制台应用程序会按照我想要的方式工作,但我不确定即使控制台应用程序不再运行,通道是否会保持打开状态?
这是我的控制台应用程序代码:
static void Main(string[] args)
{
Console.WriteLine("Starting Cleanup");
var client = new IntegrationWcfServiceClient(EndPointConfigurationName);
try
{
client.ExecuteCleanup();
//client.Close();
}
catch (Exception ex)
{
client.Abort();
WriteLineRed($"Couldn't start cleanup: {ex.Message}");
return;
}
WriteLineGreen("Cleanup started successfully");
}
这是操作合约代码:
[OperationContract(IsOneWay = true)]
void ExecuteCleanup();