public void can_use_multiple_threads()
 {
     using (var scheduler = new ThreadScheduler(5))
     {
         scheduler.Start(() => { });
         scheduler.Threads.ShouldHaveCount(5);
     }
 }
Beispiel #2
0
 private void RestoreDevice()
 {
     if (RestoreThread == null)
     {
         RestoreThread              = new ThreadScheduler();
         RestoreThread.Name         = "RestoreThread";
         RestoreThread.IsBackground = false;
     }
     RestoreThread.Start(new Action(() =>
     {
         Restore.Start();
     }));
 }
Beispiel #3
0
        private void GetiDevice()
        {
            if (DeviceCheckerThread == null)
            {
                DeviceCheckerThread              = new ThreadScheduler();
                DeviceCheckerThread.Name         = "DeviceCheckerThread";
                DeviceCheckerThread.IsBackground = true;
            }
            DeviceCheckerThread.Start(new Action(() =>
            {
                while (KeepCheckingiDevices)
                {
                    DeviceConnected = ConnectedDevice.CheckforDevices();
                    if (DeviceConnected)
                    {
                        ConnectedDevice.ConnectToDevice();
                    }
                    else
                    {
                        ConnectedDevice.DiconnectDevice();
                    }

                    if (deviceNameLbl.InvokeRequired)
                    {
                        deviceNameLbl.BeginInvoke((MethodInvoker) delegate()
                        {
                            SetLabelText(deviceNameLbl, NoDeviceName + ConnectedDevice.Name);
                        });
                    }

                    if (deviceModelLbl.InvokeRequired)
                    {
                        deviceModelLbl.BeginInvoke((MethodInvoker) delegate()
                        {
                            SetLabelText(deviceModelLbl, NoModel + ConnectedDevice.DeviceIdentifier);
                        });
                    }

                    if (deviceVersionLbl.InvokeRequired)
                    {
                        deviceVersionLbl.BeginInvoke((MethodInvoker) delegate()
                        {
                            SetLabelText(deviceVersionLbl, NoVersion + ConnectedDevice.Version);
                        });
                    }
                    Thread.Sleep(1000);
                }
            }));
        }
        private void buttonStressTest_Click(object sender, EventArgs e)
        {
            if (_StressTester == null)
            {
                if (!_reqSession.IsSigned())
                {
                    MessageBox.Show("客户端尚未登录", "错误", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                    return;
                }

                _StressTester = new ThreadScheduler <WebRequestSession>();

                WebRequestSession req = null;

                req       = _reqSession.Clone();
                req.delay = Convert.ToInt32(this.textBoxThreadDelay.Text);
                req.url   = "/caxa/get_task_list";
                _StressTester.EnqueueTask(req);

                req       = _reqSession.Clone();
                req.delay = Convert.ToInt32(this.textBoxThreadDelay.Text);
                req.url   = "/caxa/get_task?task_id=0Hck3KI5kEmJWh";
                _StressTester.EnqueueTask(req);

                req       = _reqSession.Clone();
                req.delay = Convert.ToInt32(this.textBoxThreadDelay.Text);
                req.url   = "/caxa/get_object_data?proc_id=4CE089D6-9FB9-40AF-A27A-33948FC5FC3C&object_id=02ck3KICw6x5Tb&flag=front";//E09E68C9-EEDA-4966-AA4D-DCCCE465074B&object_id=0Hck3KI5kEmJWh&flag=";
                _StressTester.EnqueueTask(req);

                req       = _reqSession.Clone();
                req.delay = Convert.ToInt32(this.textBoxThreadDelay.Text);
                req.url   = "/caxa/get_settings";
                _StressTester.EnqueueTask(req);

                req       = _reqSession.Clone();
                req.delay = Convert.ToInt32(this.textBoxThreadDelay.Text);
                req.url   = "/caxa/get_picture?task_id=0Hck3KI5kEmJWh";
                _StressTester.EnqueueTask(req);

                _StressTester._Processor = DownloadJobData;
                _StressTester.SetMode(ThreadScheduler <WebRequestSession> .MODE_REPEAT);

                int nThreads = 2;
                try{ nThreads = Convert.ToInt32(this.textBoxThreads.Text); }
                catch (Exception em) { }

                AppendLog("Threads: " + nThreads.ToString());
                _StressTester.Start(nThreads);

                tStressStarted             = DateTime.Now;
                this.buttonStressTest.Text = "停 止";

                _Running = true;
            }
            else
            {
                if (_reqSession.cts != null)
                {
                    _reqSession.cts.Cancel();
                }

                _StressTester.Stop();

                _StressTester = null;
                this.buttonStressTest.Text = "多线程并发测试";

                _Running = false;
            }
        }