Tag: wcf lob adapter

在实现时间受限的方法时,我应该中止工作线程还是让它运行?

我目前正在为现有应用程序编写基于Web服务的前端。 为此,我使用WCF LOB适配器SDK ,它允许创建自定义WCF绑定,将外部数据和操作公开为Web服务。 SDK提供了一些实现的接口,并且它们的一些方法是时间约束的:实现期望在指定的时间跨度内完成其工作或抛出TimeoutException 。 调查让我想到了“ 实现C#通用超时 ”的问题,明智地建议使用工作线程。 有了这些知识,我可以写: public MetadataRetrievalNode[] Browse(string nodeId, int childStartIndex, int maxChildNodes, TimeSpan timeout) { Func work = () => { // Return computed metadata… }; IAsyncResult result = work.BeginInvoke(null, null); if (result.AsyncWaitHandle.WaitOne(timeout)) { return work.EndInvoke(result); } else { throw new TimeoutException(); } } 但是,如果工作线程超时,则不清楚如何处理工作线程。 人们可以忘记它,就像上面的代码那样,或者可以中止它: public MetadataRetrievalNode[] Browse(string […]