曾南华

应用域这相互调用

//第一个exe 应用 域

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace console
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                for (int i = ; i < 10; i++)
                {
                    TestStatic.count *= i;
                    Console.WriteLine("我最喜欢hello world现在的值是:" + TestStatic.count);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("错误消息是:" + e.Message);
            }
        }
    }

    public class TestStatic:MarshalByRefObject,ICollection
    {
        public static int count = 1;
      

        public void CopyTo(Array array, int index)
        {
            throw new NotImplementedException();
        }

        public int Count
        {
            get {
                count = count * 5;
                return count;
            }
        }

        public bool IsSynchronized
        {
            get { throw new NotImplementedException(); }
        }

        public object SyncRoot
        {
            get { throw new NotImplementedException(); }
        }

        public IEnumerator GetEnumerator()
        {
            throw new NotImplementedException();
        }
    }
}


//在另一个执行上面一个中得域中得类。来达到相互通讯
 AppDomainSetup info2 = new AppDomainSetup();
            info2.LoaderOptimization = LoaderOptimization.SingleDomain;
            AppDomain domain2 = AppDomain.CreateDomain("console", null, info2);
            ObjectHandle objHandle = domain2.CreateInstance("console", "console.TestStatic");
            domain2.ExecuteAssembly(@"console.exe");
            ICollection obj = objHandle.Unwrap() as ICollection;
            int i = obj.Count;
          
            Console.WriteLine(i);

            AppDomain.Unload(domain2);

 

posted @ 2014-03-05 22:38  啄木鸟¥  阅读(191)  评论(0编辑  收藏  举报

曾南华