.net remoting函数调用传对象作入参与传对象引用作入参的区别

1. 关于.net remoting生存期的问题
  如果不熟悉.net remoting生存期问题,可能会出现莫名其妙的调用对象被销毁,其实这是.net remoting生存期到了,
  一般在服务端应用,都希望永久不过期,于是重写下面函数。
    /// <summary>
    /// 永久不失效
    /// </summary>
    /// <returns></returns>
    public override Object InitializeLifetimeService()
    {
        return null;
    }    
    返回null表示永久不失效。
2. .net remoting调用对象的值的修改问题,当希望调用remoting方法后,传入的对象值能在远程对象中改变,一定要传引用。
对比以下测试
2.1 传递对象,不通过remoting调用
    public void TestList(List<int> dataList)
    {
        dataList.Add(100);
    }    
    public void Test()
    {
        List<int> dataList = new List<int>();
        TestList(dataList);
    }    
    调用Test(),dataList元素加入了100.    
    现在改为remoting调用TestList,这时100并没有加入dataList,返回还是空的列表。
2.2 传对象引用,不通过remoting调用
    public void TestList(ref List<int> dataList)
    {
        dataList.Add(100);
    }
    public void Test()
    {
        List<int> dataList = new List<int>();
        TestList(ref dataList);
    }    
    调用Test(),毫无疑问,dataList元素加入了100.
    现在改为remoting调用TestList,这时dataList元素加入了100,和不通过remoting调用一样.
    
   通过以上例子,.net remoting对象调用传入引用才能改变其内容和值,具体什么原因未知。

    

发布了64 篇原创文章 · 获赞 19 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/ComputerInBook/article/details/100058441
今日推荐