【问题标题】:How to create an async/background process within a WCF operation?如何在 WCF 操作中创建异步/后台进程?
【发布时间】:2012-04-25 13:25:03
【问题描述】:
在我的 WCF 操作中,我将执行操作所需的逻辑:保存记录、获取数据集等,在某些情况下,我还需要记录活动。但是,在这些情况下,我觉得让客户端应用程序等待 WCF 操作来记录活动是没有意义的。我想启动记录过程,然后立即将任何必要的内容返回给客户端,而无需等待记录过程完成。
我不关心记录过程何时完成,只需触发并忘记。
我也更喜欢使用 BasicHttpBinding 来保持最大的互操作性。
这可能吗?有人愿意分享编码示例或带有编码示例的网站链接吗?
【问题讨论】:
标签:
c#
wcf
logging
background-process
performance
【解决方案1】:
这可以很容易地使用任意数量的线程技术来完成。
举一个非常简单的例子,试着修改一下:
// Log something going on.
System.Threading.ThreadPool.QueueUserWorkItem((args) =>
{
System.Diagnostics.EventLog.WriteEntry("my source", "my logging message");
});
在该 lambda 方法中,您可以使用您喜欢的任何日志记录类,如果您想记录一些当前状态,您可以在记录器中包含局部变量。