.net - 将 OperationContext 保存在任务并行库中

标签 .net wcf task-parallel-library operationcontext

我们在深层抽象程序集中的某个地方有一个 WCF 行为,它从 OperationContext.Current 读取数据,当从 Task 中执行此代码时,OperationContext.Current 为空,是否可以在抽象程序集中解决此问题,或者我们将需要向该程序集的所有使用者添加一些代码吗?

最佳答案

正面临着类似的问题。正在通过任务调用服务。
下面的代码片段解决了。 OperationContext.Current通过类型转换 state 显式设置变量由 Task 提供在调用服务完成之前。

Task<int> taskContactsCount = Task.Factory.StartNew<int>((state) =>
        {
            int count = 0;
            try
            {
                OperationContext.Current = (OperationContext)state;
                TestServiceClient testServiceProxy = new TestServiceClient();
                var count = testServiceProxy.GetCount();
            }
            catch (Exception ex)
            {
            }
            return contactsCount;
        }, OperationContext.Current);

关于.net - 将 OperationContext 保存在任务并行库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11500164/

相关文章:

C# 使用泛型和接口(interface)实现

c# - 在 WCF 服务中添加自定义构造函数并在客户端(asp.net 或 Windows 窗体)上访问它

.net - 为什么垃圾收集器不收集任务对象

.net - 除了 Microsoft 和 Mono 之外,还有其他 .Net 实现吗?

.net - 如何快速更改生成和使用 NuGet 包的自定义库?

c# - 获取依赖程序集?

c# - 任务中的秒表似乎在所有任务中都是可加的,只想测量任务间隔

c# - 多次打开关闭ServiceHost

c# - 如何手动创建 Silverlight PollingDuplex 客户端/代理?

c# - 关于套接字编程的 APM、EAP 和 TPL