Click here to Skip to main content
15,900,429 members
Home / Discussions / C#
   

C#

 
GeneralRe: MultiThread and File process Pin
Ilia Blank18-Jan-10 5:04
Ilia Blank18-Jan-10 5:04 
AnswerRe: MultiThread and File process Pin
wjp_auhtm15-Jan-10 3:54
wjp_auhtm15-Jan-10 3:54 
GeneralRe: MultiThread and File process Pin
AlexB4715-Jan-10 4:06
AlexB4715-Jan-10 4:06 
GeneralRe: MultiThread and File process Pin
wjp_auhtm16-Jan-10 2:29
wjp_auhtm16-Jan-10 2:29 
GeneralRe: MultiThread and File process Pin
Luc Pattyn15-Jan-10 5:13
sitebuilderLuc Pattyn15-Jan-10 5:13 
AnswerRe: MultiThread and File process Pin
Alaric Dailey15-Jan-10 6:00
Alaric Dailey15-Jan-10 6:00 
GeneralRe: MultiThread and File process Pin
AlexB4717-Jan-10 20:45
AlexB4717-Jan-10 20:45 
GeneralRe: MultiThread and File process Pin
Alaric Dailey18-Jan-10 4:37
Alaric Dailey18-Jan-10 4:37 
QuestionSystem.InvalidCastException Query Pin
DwR15-Jan-10 2:45
DwR15-Jan-10 2:45 
AnswerRe: System.InvalidCastException Query Pin
DwR16-Jan-10 2:45
DwR16-Jan-10 2:45 
AnswerRe: System.InvalidCastException Query Pin
Eddy Vluggen17-Jan-10 10:50
professionalEddy Vluggen17-Jan-10 10:50 
GeneralRe: System.InvalidCastException Query Pin
FenixTX10-Feb-10 3:52
FenixTX10-Feb-10 3:52 
GeneralRe: System.InvalidCastException Query Pin
Eddy Vluggen10-Feb-10 4:18
professionalEddy Vluggen10-Feb-10 4:18 
QuestionTrap and Read magnetic tripe card reader [modified] Pin
Kaikus14-Jan-10 23:57
Kaikus14-Jan-10 23:57 
AnswerRe: Trap and Read magnetic tripe card reader Pin
OriginalGriff15-Jan-10 0:24
mveOriginalGriff15-Jan-10 0:24 
AnswerRe: Trap and Read magnetic tripe card reader Pin
Roger Wright15-Jan-10 17:29
professionalRoger Wright15-Jan-10 17:29 
QuestionApplication Domain Pin
dataminers14-Jan-10 23:24
dataminers14-Jan-10 23:24 
AnswerRe: Application Domain Pin
EliottA15-Jan-10 2:44
EliottA15-Jan-10 2:44 
AnswerRe: Application Domain Pin
Eddy Vluggen15-Jan-10 3:11
professionalEddy Vluggen15-Jan-10 3:11 
GeneralRe: Application Domain Pin
dataminers15-Jan-10 9:50
dataminers15-Jan-10 9:50 
GeneralRe: Application Domain Pin
Eddy Vluggen15-Jan-10 11:17
professionalEddy Vluggen15-Jan-10 11:17 
GeneralRe: Application Domain Pin
dataminers16-Jan-10 2:23
dataminers16-Jan-10 2:23 
GeneralRe: Application Domain Pin
Eddy Vluggen16-Jan-10 8:50
professionalEddy Vluggen16-Jan-10 8:50 
GeneralRe: Application Domain Pin
dataminers15-Jan-10 10:31
dataminers15-Jan-10 10:31 
Following two class in the ClassLibrary

FIRST CLASS

using System;
using System.Runtime.InteropServices;

namespace MyLibrary
{
    public class CrossAppDomainSingleton<T> : MarshalByRefObject where T : new() 
    { 
        private static readonly string AppDomainName = "Singleton AppDomain"; 
        private static T _instance;

        private static AppDomain GetAppDomain(string friendlyName) 
        { 
            IntPtr enumHandle = IntPtr.Zero; 
            mscoree.CorRuntimeHostClass host = new mscoree.CorRuntimeHostClass(); 
            
            try 
            { 
                host.EnumDomains(out enumHandle); 
                object domain = null; 
                
                while (true) 
                { 
                    host.NextDomain(enumHandle, out domain); 
                    if (domain == null) 
                    { 
                        break; 
                    } 
                    
                    AppDomain appDomain = (AppDomain)domain; 
                    
                    if (appDomain.FriendlyName.Equals(friendlyName)) 
                    { 
                        return appDomain; 
                    }
                }
            }
            finally 
            { 
                host.CloseEnum(enumHandle); 
                Marshal.ReleaseComObject(host); 
                host = null; 
            }
            
            return null; 
        } 
        
        public static T Instance 
        { 
            get 
            { 
                if (null == _instance) 
                { 
                    AppDomain appDomain = GetAppDomain(AppDomainName); 
                    
                    if (null == appDomain) 
                    { 
                        appDomain = AppDomain.CreateDomain(AppDomainName); 
                    } 
                    
                    Type type = typeof(T); 
                    T instance = (T)appDomain.GetData(type.FullName); 
                    
                    if (null == instance) 
                    { 
                        instance = (T)appDomain.CreateInstanceAndUnwrap(type.Assembly.FullName, type.FullName); 
                        appDomain.SetData(type.FullName, instance); 
                    } 
                    
                    _instance = instance; 
                } 
                
                return _instance; 
            } 
        } 
    }
}


SECOND CLASS

using System.Collections.Generic;

namespace MyLibrary
{
    public class MySingleton : CrossAppDomainSingleton<MySingleton>
    {
        private List<string> m_List = new List<string>();

        public void Add(string pValue)
        {
            m_List.Add(pValue);
        }

        public List<string> Get()
        {
            return m_List;
        }

    }
}


I ADD TWO WindowsFormsApplication TO MY SOLUTION, AND I ADD REFERENCE WHICH IS MYLIBRARY

I WROTE FOLLOWING CODE TO FIRST WINFORM
MySingleton.Instance.Add("test");


I WROTE FOLLOWING CODE TO SECOND WINFORM
List<string> res = MySingleton.Instance.Get();


BUT I CAN GET ADDED ITEM FROM FIRST WINFORM IN SECOND WINFORM
QuestionCaching powers of 2 -- performance consideration Pin
Lutosław14-Jan-10 22:36
Lutosław14-Jan-10 22:36 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.