我对biztalk相当新的,并创建自定义管道组件。我在类似于以下的示例中看到了代码:

public void Disassemble(IPipelineContext pContext, IBaseMessage pInMsg)
{

    Stream originalDataStream = pInMsg.BodyPart.GetOriginalDataStream();
    StreamReader strReader = new StreamReader(originalDataStream);

    string strOriginalData = strReader.ReadToEnd();

    byte[] bufferOriginalMessage = new byte[strOriginalData.Length];
    bufferOriginalMessage = ASCIIEncoding.Default.GetBytes(strOriginalData);

    Stream ms = new MemoryStream();
    ms.Write(bufferOriginalMessage, 0, strOriginalD

    //other stuff here

    ms.Seek(0, SeekOrigin.Begin);
    pInMsg.BodyPart.Data = ms;
}
.

但是在方法中无处可行,是封闭或处置的StreamReader。该方法仅退出。

通常在使用StreamReader和其他类时,最好使用使用语句,以便自动处理流。

有一个特定的原因(也许在biztalk中)为什么你不会丢弃这个StreamReader?

我没有找到此时的任何信息。任何人都可以帮忙吗?

有帮助吗?

解决方案

一般来说,是的,靠近您不再需要的读者和流的良好做法。也就是说,每次可能不一定需要100%。例如,关闭读者将正常关闭底层流,但是可能已经意识到了它已经意识到了流,并将在其自身上关闭它。

是什么是良好的做法,但是,要添加在管道组件中使用的任何流,终身将消息与资源跟踪器,因此BizTalk可以在流水线执行完成时自动处理它们,并且已处理消息。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top