English 中文(简体)
在从客户一方处置单项物体时,改道向处置方法发出两次电话
原标题:Remoting channel calls twice to the Dispose method while disposing SingleCall objects from client side
  • 时间:2010-09-23 16:41:27
  •  标签:
  • c#
  • remoting

我们有许多课程作为单挑动渠道发表。 申请属于窗口服务。 在以下假设情景中使用:

  1. From the same application domain
  2. From another application domain using CrossAppDomain remoting channel
  3. From a remote client through the network using a tcp channel

由于这三类学校中有一部分使用,我们有一些共同的守则与它们一起行动,例如:

using(IRemoteObject remoteObject= (IRemoteObject) 
        RemotingHelper.GetObject(typeof(IRemoteObject)))
{
   remoteObject.DoStuff();
}

RemotingHelper已经知道如何根据设想制造物体。 这是对Ingo Rammer的修改。

所有遥远物体的界面均继承可开发的,所有遥远物体均继承马莎尔·雷夫奥特。

因此,在前两个案件中使用该守则时,该守则的行为是正确的,但在实际改用遥远物体时,该守则是两次制造的,处置两次。

之所以出现这种情况,是因为“地址”呼吁,即由using声明发出的呼吁,是一种新的遥远的呼吁,但为了自动处置该物体,重新启动的不轨结构已经要求这样做,因为单项物体如何行事:每一份呼吁都会产生新的情况,并自动处理。

是否有任何配置价值来避免这些重复的(多余的)电话?


Edit:我已经知道为什么发生这种情况。 如果一个偏远的单一识别器可以反对在方法回归后自动要求改道,则第二电话由客户一方生成的代理发出,造成服务器一旁出现新物体,而只是要求使用处置方法。

第二项呼吁是我要避免的呼吁,因为它是不必要的。

最佳回答

想更多了解这一点,我倾向于认为这是正确的行为。 如我所知,<代码>SingleCall,每当你在标语上打一个方法时,服务器就制造了一个新物体。 因此,制造和处置多重物体是有道理的。 也就是说,该法典:

IRemoteObject remoteObject= (IRemoteObject) 
        RemotingHelper.GetObject(typeof(IRemoteObject));

为该客户创建代理人。 如果我正确回顾,就没有与服务器联系。

现在,在你执行时:

www.un.org/spanish/ga/president

进行了远程电话。 服务器制造物体,执行方法,(如果有)收益价值,处置物体。

然后,当你打电话<代码>Dispose(或using的代码”时,服务器再次这样做:制造物体,打上Dispose,并销毁物体。

http://msdn.microsoft.com/en-us/library/a719487(v=VS.71).aspx“rel=”http://msdn.microsoft.com/en-us/library/a719487(v=VS.71).aspx” rel=“nofollow noretinger”http://msdn.microsoft.com/en-us/library/a719487(v=S.71)。

但是,为什么在你的设想1和2中出现这种情况,令人困惑。

OLD RESPONSE:

我不知道防止这种行为的任何组合参数。 但是,如果你实施了<条码>Dispose 方法,如建议,你应当有旗帜说明该物体是否已经处置。 因此,请上<代码>Dispose的多个时间段为t。

问题回答

暂无回答




相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

How to Use Ghostscript DLL to convert PDF to PDF/A

How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...

热门标签