Пример #1
0
        public void ProcessHasExit(AccountWatcherThread Thread, bool UserCall = false)
        {
            try
            {
                if (Thread.Account.DiabloIII != null)
                {
                    Thread.Account.DiabloIII.Dispose();
                }

                GManager.GThread.Threads.Remove(Thread);
                GManager.GThread.HasThreads = GManager.GThread.Threads.Count > 0;

                if (!GManager.GThread.HasThreads)// All has exit
                {
                    GManager.GThread.ExitThread.Set();

                    if (!UserCall)     // All Diablo exited, not called by user
                    {
                        Extensions.Execute.UIThread(() => {
                            // MainWindow.Window.LoadPageIntoMain(typeof(Stop));
                            Templates.Templating.BasicEvents.TryBringBack();
                        });
                    }
                }
            }

            catch (Exception e)
            {
                Extensions.Execute.UIThread(() =>
                {
                    // MessageBox.Show(e.ToString());
                });
            }
        }
Пример #2
0
        public void CreateThread()
        {
            lock (new object())
            {
                try
                {
                    new Thread(() =>
                    {
                        foreach (GameManagerAccounts Account in Accounts)
                        {
                            List <Action> GUpdate = new List <Action>();
                            if (Account.MainAccount && !Config.Get <FKConfig>().General.FKSettings.UseOverlayInGame)
                            {
                                GUpdate.Add(GManager.GRef.Actors.Enumerate);
                            }
                            else if (!Account.MainAccount)
                            {
                                GUpdate.Add(GManager.GRef.Actors.EnumerateMultibox);
                            }

                            AccountWatcherThread Thread = new AccountWatcherThread(Account, GUpdate);
                            GManager.GThread.Threads.Add(Thread);
                        }

                        GManager.GThread.ExitThread.WaitOne();
                    }).Start();
                }

                catch (Exception e)
                {
                    Extensions.Execute.UIThread(() =>
                                                MessageBox.Show(e.ToString()));
                }
            }
        }