示例#1
0
        public void RunClientManagerStartupLisp()
        {
            if (ClientManager.StartedUpLisp)
            {
                return;
            }
            ThreadStart mi = () =>
            {
                DLRConsole.SafelyRun(clientManager.StartUpLisp);
            };

            StartUpLispThread            = Thread.CurrentThread;
            clientManager.outputDelegate = WriteLine;
            DLRConsole.DebugWriteLine("Current Thread = " + Thread.CurrentThread.Name);
            if (false && StartUpLispThread.ApartmentState == ApartmentState.STA)
            {
                mi();
            }
            else
            {
                StartUpLispThread = new Thread(mi)
                {
                    Name = "StartUpLispThread"
                };
                StartUpLispThread.SetApartmentState(ApartmentState.STA);
                StartUpLispThread.Start();
            }
        }
示例#2
0
 /// <summary>
 /// runs in a STA thread (by creating one)  Does not "join"
 /// </summary>
 /// <param name="args"></param>
 public static void RunInThread(ApartmentState must, ThreadStart runMain, bool blocking)
 {
     if (!blocking || Thread.CurrentThread.ApartmentState != must)
     {
         Thread newThread = new Thread(runMain);
         newThread.SetApartmentState(must);
         newThread.Start();
         if (blocking)
         {
             newThread.Join();
         }
         return;
     }
     else
     {
         runMain();
     }
 }
示例#3
0
 /// <summary>
 /// runs in a STA thread (by creating one)  Does not "join"
 /// </summary>
 /// <param name="args"></param>        
 public static void RunInThread(ApartmentState must, ThreadStart runMain, bool blocking)
 {
     if (!blocking || Thread.CurrentThread.ApartmentState != must)
     {
         Thread newThread = new Thread(runMain);
         newThread.SetApartmentState(must);
         newThread.Start();
         if (blocking) newThread.Join();
         return;
     }
     else
     {
         runMain();
     }
 }
示例#4
0
        public static Thread InSTAThread(ThreadStart invoker, string fullName) {

            Thread t = new Thread(new ThreadStart(() =>
            {
                Thread ct = Thread.CurrentThread;
                try
                {
                    if (ct.ApartmentState != ApartmentState.STA) ct.SetApartmentState(ApartmentState.STA);
                }
                catch (Exception)
                {
                } 
                try
                {
                    invoker();
                   // ct.Abort();
                }
                catch (Exception e)
                {
                    GlobalWriteLine(fullName + " " + e);
                }
            }));
            t.Name = "InSTAThread " + fullName;
            try
            {
                if (t.ApartmentState != ApartmentState.STA) t.SetApartmentState(ApartmentState.STA);
            }
            catch (Exception)
            {
                               
            }
            t.Start();
            return t;
        }
 public void RunClientManagerStartupLisp() {
      
     if (ClientManager.StartedUpLisp) return;
     ThreadStart mi = () =>
                          {
                              DLRConsole.SafelyRun(clientManager.StartUpLisp);
                          };
     StartUpLispThread = Thread.CurrentThread;
     clientManager.outputDelegate = WriteLine;
     DLRConsole.DebugWriteLine("Current Thread = " + Thread.CurrentThread.Name);
     if (false && StartUpLispThread.ApartmentState == ApartmentState.STA)
     {
         mi();
     }
     else
     {
         StartUpLispThread = new Thread(mi)
                                 {
                                     Name = "StartUpLispThread"
                                 };
         StartUpLispThread.SetApartmentState(ApartmentState.STA);
         StartUpLispThread.Start();
     }
 }