/// <summary> /// 配置队列线程 /// </summary> private void ConfigQueueThread() { String appName = m_ConsumerConfig.ApplicationName; if (m_EsbConfig.ServiceConfig != null && m_EsbConfig.ServiceConfig.Count > 0) { //--根据QueueCenter的消费者配置文件中的ApplicationName找到和本机相关的配置文件 List <EsbView_ServiceConfig> lstServcieConfig = m_EsbConfig.ServiceConfig.FindAll(x => { return(!String.IsNullOrEmpty(x.QueueCenterUri) && appName.EndsWith(x.QueueCenterUri)); }); //--删除不应该由本机消费的队列并停用相关线程 DeleteQueueThread(lstServcieConfig); //--添加本机应该消费的队列 foreach (EsbView_ServiceConfig sc in lstServcieConfig) { if (!m_QueueThreadDict.ContainsKey(sc.ServiceName)) { RabbitMQClient rabbitMQ = new RabbitMQClient(m_ParamMQ[0], m_ParamMQ[2], m_ParamMQ[3], Int32.Parse(m_ParamMQ[1])); QueueThread qt = new QueueThread(sc.ServiceName, rabbitMQ); qt.Start(); m_QueueThreadDict[sc.ServiceName] = qt; } } } else { //--删除不应该由本机消费的队列并停用相关线程 DeleteQueueThread(null); } }
public void Stop() { if (QueueThread.IsAlive) { QueueThread.Abort(); } }
/// <summary> /// 启动 /// </summary> public void Start() { if (!QueueThread.IsAlive) { QueueThread.Start(); } }
public RemoteControl(IRSensorLockWrapper irSensorWrapper, IRChannel channel) { this.irSensorWrapper = irSensorWrapper; this.channel = channel; queue = new QueueThread(); thread = new Thread(Loop) { IsBackground = true }; thread.Start(); }
public void TestMethod1() { var qt = new QueueThread <int>((item) => { System.Diagnostics.Debug.WriteLine(item); Thread.Sleep(1000); }); qt.Start(8); for (int i = 0; i < 100; i++) { // Thread.Sleep(100); qt.Enqueue(i); } Thread.Sleep(40000); qt.WaitEnd(); }
public async Task <ThreadResponse> SendSingleRequestAsync() { ThreadModel model = new ThreadModel(); string name = $"{Guid.NewGuid().ToString("N")}_{DateTime.Now.ToString("HHmmss")}"; model.Name = name; //if cannot add request -> response bad request if (!QueueThread.AddThreadRequest(model)) { ThreadResponse response = new ThreadResponse(); response.Status = 400; response.Message = "Bad Request"; return(response); } model.Event.WaitOne(); return(model.Response); }
public void TestInitialize() { config = new QueueConfiguration("QueueName"); shutdown = new Mock <IProvideShutdownSignal>(); shutdown.SetupGet(s => s.ShouldShutdown) .Returns(() => loopCount > 0) .Callback(() => loopCount--); log = new Mock <ILog <QueueThread> >(); dataAccess = new Mock <IBusDataAccess>(); work = new Mock <IQueueWork>(); work.Setup(p => p.DoWork()) .Returns(Task.FromResult(true)); thread = new QueueThread(shutdown.Object, dataAccess.Object, log.Object, work.Object, config); }
public JabberModel(JustTalk gui) { this.gui = gui; packetQueue = new PacketQueue(); queueThread = new QueueThread(packetQueue); queueThread.addPacketListener(new OpenStreamHandler(), "stream:stream"); queueThread.addPacketListener(new CloseStreamHandler(this), "/stream:stream"); queueThread.addPacketListener(new MessageHandler(this), "message"); //Додадено од Милош/Васко queueThread.addPacketListener(new AuthHandler(this), "jabber:iq:auth"); queueThread.addPacketListener(new IQHandler(this), "iq"); //Крај додадено //marko queueThread.addPacketListener(new RosterHandler(this), "jabber:iq:roster"); //kraj marko queueThread.addPacketListener(new PresenceHandler(this), "presence"); queueThread.addPacketListener(new RegisterHandler(this), "jabber:iq:register"); queueThread.setDaemon(true); queueThread.start(); }
public void Start() { var queueThread = new QueueThread(_monsterQueue, _monsterTargets); ThreadPool.QueueUserWorkItem(queueThread.ThreadStart); }
public override void OnActivityCreated (Bundle savedInstanceState) { base.OnActivityCreated (savedInstanceState); queue = new QueueThread(OnDequeue); brickController = BrickController.Instance; remoteSettings = RemoteSettings.Instance; circle = (ImageView) this.View.FindViewById<ImageView> (Resource.Id.circle); circleAnimation = (AnimationDrawable) circle.Drawable; //grayCircle = Resources.GetDrawable(Resource.Drawable.aniGray); seekBar = (SeekBar)this.View.FindViewById<SeekBar> (Resource.Id.seekBar); seekBar.Max = 200; angleLabel = (TextView)this.View.FindViewById<TextView> (Resource.Id.angleLabel); speedLabel = (TextView)this.View.FindViewById<TextView> (Resource.Id.speedLabel); sliderLabel = (TextView)this.View.FindViewById<TextView> (Resource.Id.seekLabel); angleText = (TextView)this.View.FindViewById<TextView> (Resource.Id.angleTextView); speedText = (TextView)this.View.FindViewById<TextView> (Resource.Id.speedTextView); sliderText = (TextView)this.View.FindViewById<TextView> (Resource.Id.seekTextView); sensor1 = (Button)this.View.FindViewById<Button> (Resource.Id.sensor1Button); sensor2 = (Button)this.View.FindViewById<Button> (Resource.Id.sensor2Button); sensor3 = (Button)this.View.FindViewById<Button> (Resource.Id.sensor3Button); sensor4 = (Button)this.View.FindViewById<Button> (Resource.Id.sensor4Button); sensor1.Click += delegate { queue.AddToQueue( delegate { string s = brickController.NXT.Sensor1.ReadAsString(); Activity.RunOnUiThread(delegate() { //this should not run in the gui thread if(remoteSettings.SensorValueToSpeech && TabActivity.Speech != null){ TabActivity.Speech.Speak(s, Android.Speech.Tts.QueueMode.Flush, null); } }); }, true,1 ); }; sensor2.Click += delegate { queue.AddToQueue( delegate { string s = brickController.NXT.Sensor2.ReadAsString(); Activity.RunOnUiThread(delegate() { //this should not run in the gui thread if(remoteSettings.SensorValueToSpeech && TabActivity.Speech != null){ TabActivity.Speech.Speak(s, Android.Speech.Tts.QueueMode.Flush, null); } }); }, true,1 ); }; sensor3.Click += delegate { queue.AddToQueue( delegate { string s = brickController.NXT.Sensor3.ReadAsString(); Activity.RunOnUiThread(delegate() { //this should not run in the gui thread if(remoteSettings.SensorValueToSpeech && TabActivity.Speech != null){ TabActivity.Speech.Speak(s, Android.Speech.Tts.QueueMode.Flush, null); } }); }, true,1 ); }; sensor4.Click += delegate { queue.AddToQueue( delegate { string s = brickController.NXT.Sensor4.ReadAsString(); Activity.RunOnUiThread(delegate() { //this should not run in the gui thread if(remoteSettings.SensorValueToSpeech && TabActivity.Speech != null){ TabActivity.Speech.Speak(s, Android.Speech.Tts.QueueMode.Flush, null); } }); }, true,1 ); }; seekBar.Progress = 100; sliderText.Text = progress.ToString(); seekBar.StopTrackingTouch += delegate(object sender, SeekBar.StopTrackingTouchEventArgs e) { e.SeekBar.Progress = 100; progress = 0; Activity.RunOnUiThread (delegate() { sliderText.Text = progress.ToString(); }); if(remoteSettings.SendVehicleDataToMailbox){ queue.AddToQueue( delegate { SendDataToMailbox(); }, true,2 ); } else{ queue.AddToQueue( delegate { additionalMotor.Off(); }, true,2 ); } }; seekBar.ProgressChanged += delegate(object sender, SeekBar.ProgressChangedEventArgs e) { progress = e.Progress - 100; Activity.RunOnUiThread (delegate() { sliderText.Text = progress.ToString(); }); if(remoteSettings.SendVehicleDataToMailbox){ queue.AddToQueue( delegate { SendDataToMailbox(); }, true,2 ); } else{ queue.AddToQueue( delegate { additionalMotor.On((sbyte) (e.Progress -100)); }, true,2 ); } }; circle.Touch += delegate(object sender, View.TouchEventArgs e) { if(e.Event.Action == MotionEventActions.Up){ angleText.Text = "0.0"; speedText.Text = "0.0"; angle = 0.0f; speed = 0.0f; wasRunningForward = true; if(remoteSettings.SendVehicleDataToMailbox){ queue.AddToQueue( delegate { SendDataToMailbox(); }, true,2 ); } else{ queue.AddToQueue( delegate { brickController.NXT.Vehicle.Off(); }, true,3 ); } circle.SetImageResource(Resource.Drawable.animation); circleAnimation = (AnimationDrawable) circle.Drawable; circleAnimation.Start(); } if(e.Event.Action == MotionEventActions.Move || e.Event.Action == MotionEventActions.Down) { //movingOnCircle = true; if(diameter == 0){ diameter = circle.Width / 2; } x = e.Event.GetX()-diameter; y = -(e.Event.GetY()-diameter); float outside = diameter*(float)1.06; if( !(x > outside || x < -outside || y > outside || y < -outside) ){ if(x > 0.0){ angle = Math.Atan(y/x); if( y < 0.0) angle = Math.Atan(y/x)+ 2*Math.PI; } else{ angle = Math.Atan(y/x) + Math.PI; } angle = angle + remoteSettings.DegreeOffset; //convert radians to degree angle = (angle * (180.0 / Math.PI))%360; speed = (float)Math.Sqrt( x*x + y*y); speed = speed/diameter * 100; if(speed > 100.0){ speed = (float)100.0; } } else{ speed = 0.0f; angle = 0.0f; } int intSpeed =(int) speed; Activity.RunOnUiThread (delegate() { if(intSpeed < 10){ circle.SetImageResource(Resource.Drawable.ani0); } else if(intSpeed < 20){ circle.SetImageResource(Resource.Drawable.ani1); } else if(intSpeed < 30){ circle.SetImageResource(Resource.Drawable.ani2); } else if(intSpeed < 40){ circle.SetImageResource(Resource.Drawable.ani3); } else if(intSpeed < 50){ circle.SetImageResource(Resource.Drawable.ani4); } else if(intSpeed < 60){ circle.SetImageResource(Resource.Drawable.ani5); } else if(intSpeed < 70){ circle.SetImageResource(Resource.Drawable.ani6); } else if(intSpeed < 80){ circle.SetImageResource(Resource.Drawable.ani7); } else if(intSpeed < 90){ circle.SetImageResource(Resource.Drawable.ani8); } else{ circle.SetImageResource(Resource.Drawable.ani9); } circleAnimation.Stop(); //angleText.Text = "Angle: " + string.Format("{0,5:###.0}", angle).PadLeft(7); //speedText.Text = "Speed: " + string.Format("{0,5:###.0}", speed).PadLeft(7); angleText.Text = string.Format("{0,5:###.0}", angle); speedText.Text = string.Format("{0,5:###.0}", speed); }); if(remoteSettings.SendVehicleDataToMailbox){ queue.AddToQueue( delegate { SendDataToMailbox(); }, true,2 ); } else{ queue.AddToQueue( delegate { if(angle >= 10.0f && angle < 80.0f){ brickController.NXT.Vehicle.TurnLeftForward((sbyte)speed, (sbyte)(100.0f-(angle-10.0f)/70.0f * 100.0f)); wasRunningForward = true; return; } if(angle >= 100.0f && angle < 170.0f){ brickController.NXT.Vehicle.TurnLeftReverse((sbyte)speed, (sbyte)(100.0f-(170-(angle-10.0f))/70.0f * 100.0f)); wasRunningForward = false; return; } if(angle >= 190.0f && angle < 260.0f){ brickController.NXT.Vehicle.TurnRightReverse((sbyte)speed, (sbyte)(100.0f-((angle-10.0f)-190)/70.0f * 100.0f)); wasRunningForward = false; return; } if(angle >= 280.0f && angle <= 350.0f){ brickController.NXT.Vehicle.TurnRightForward((sbyte)speed, (sbyte)(100.0f-(350-(angle-10.0f))/70.0f * 100.0f)); wasRunningForward = true; return; } if( (angle < 10.0f && angle >= 0.0f) || (angle > 350.0f) ){ brickController.NXT.Vehicle.Forward((sbyte)speed); return; } if( angle >= 170.0f && angle < 190.0f){ brickController.NXT.Vehicle.Backward((sbyte)speed); return; } if( angle >= 80.0f && angle < 100.0f){ if(wasRunningForward){ brickController.NXT.Vehicle.SpinLeft((sbyte)speed); } else{ brickController.NXT.Vehicle.SpinRight((sbyte)speed); } return; } if( angle >= 260.0f && angle < 280.0f){ if(wasRunningForward){ brickController.NXT.Vehicle.SpinRight((sbyte)speed); } else{ brickController.NXT.Vehicle.SpinLeft((sbyte)speed); } return; } }, true,3 ); } } }; circleAnimation.Start(); }
void createQueueThread() { QueueThread qThread = new QueueThread(packetQueue); //qThread.setDaemon(true); DO NOT set Daemon qThread.addPacketListener(new OpenStreamHandler(index), "stream:stream"); qThread.addPacketListener(new CloseStreamHandler(index), "/stream:stream"); qThread.addPacketListener(new MessageHandler(index), "message"); qThread.addPacketListener(new PresenceHandler(index), "presence"); qThread.addPacketListener(new RegisterHandler(index), "jabber:iq:register"); qThread.addPacketListener(new AuthHandler(index), "jabber:iq:auth"); qThread.addPacketListener(new RosterHandler(index), "jabber:iq:roster"); qThread.addPacketListener(new SaveStateHandler(index), "savestate"); qThread.start(); }
public override void OnActivityCreated(Bundle savedInstanceState) { base.OnActivityCreated(savedInstanceState); queue = new QueueThread(OnDequeue); brickController = BrickController.Instance; remoteSettings = RemoteSettings.Instance; circle = (ImageView)this.View.FindViewById <ImageView> (Resource.Id.circle); circleAnimation = (AnimationDrawable)circle.Drawable; //grayCircle = Resources.GetDrawable(Resource.Drawable.aniGray); seekBar = (SeekBar)this.View.FindViewById <SeekBar> (Resource.Id.seekBar); seekBar.Max = 200; angleLabel = (TextView)this.View.FindViewById <TextView> (Resource.Id.angleLabel); speedLabel = (TextView)this.View.FindViewById <TextView> (Resource.Id.speedLabel); sliderLabel = (TextView)this.View.FindViewById <TextView> (Resource.Id.seekLabel); angleText = (TextView)this.View.FindViewById <TextView> (Resource.Id.angleTextView); speedText = (TextView)this.View.FindViewById <TextView> (Resource.Id.speedTextView); sliderText = (TextView)this.View.FindViewById <TextView> (Resource.Id.seekTextView); sensor1 = (Button)this.View.FindViewById <Button> (Resource.Id.sensor1Button); sensor2 = (Button)this.View.FindViewById <Button> (Resource.Id.sensor2Button); sensor3 = (Button)this.View.FindViewById <Button> (Resource.Id.sensor3Button); sensor4 = (Button)this.View.FindViewById <Button> (Resource.Id.sensor4Button); sensor1.Click += delegate { queue.AddToQueue( delegate { string s = brickController.NXT.Sensor1.ReadAsString(); Activity.RunOnUiThread(delegate() { //this should not run in the gui thread if (remoteSettings.SensorValueToSpeech && TabActivity.Speech != null) { TabActivity.Speech.Speak(s, Android.Speech.Tts.QueueMode.Flush, null); } }); }, true, 1 ); }; sensor2.Click += delegate { queue.AddToQueue( delegate { string s = brickController.NXT.Sensor2.ReadAsString(); Activity.RunOnUiThread(delegate() { //this should not run in the gui thread if (remoteSettings.SensorValueToSpeech && TabActivity.Speech != null) { TabActivity.Speech.Speak(s, Android.Speech.Tts.QueueMode.Flush, null); } }); }, true, 1 ); }; sensor3.Click += delegate { queue.AddToQueue( delegate { string s = brickController.NXT.Sensor3.ReadAsString(); Activity.RunOnUiThread(delegate() { //this should not run in the gui thread if (remoteSettings.SensorValueToSpeech && TabActivity.Speech != null) { TabActivity.Speech.Speak(s, Android.Speech.Tts.QueueMode.Flush, null); } }); }, true, 1 ); }; sensor4.Click += delegate { queue.AddToQueue( delegate { string s = brickController.NXT.Sensor4.ReadAsString(); Activity.RunOnUiThread(delegate() { //this should not run in the gui thread if (remoteSettings.SensorValueToSpeech && TabActivity.Speech != null) { TabActivity.Speech.Speak(s, Android.Speech.Tts.QueueMode.Flush, null); } }); }, true, 1 ); }; seekBar.Progress = 100; sliderText.Text = progress.ToString(); seekBar.StopTrackingTouch += delegate(object sender, SeekBar.StopTrackingTouchEventArgs e) { e.SeekBar.Progress = 100; progress = 0; Activity.RunOnUiThread(delegate() { sliderText.Text = progress.ToString(); }); if (remoteSettings.SendVehicleDataToMailbox) { queue.AddToQueue( delegate { SendDataToMailbox(); }, true, 2 ); } else { queue.AddToQueue( delegate { additionalMotor.Off(); }, true, 2 ); } }; seekBar.ProgressChanged += delegate(object sender, SeekBar.ProgressChangedEventArgs e) { progress = e.Progress - 100; Activity.RunOnUiThread(delegate() { sliderText.Text = progress.ToString(); }); if (remoteSettings.SendVehicleDataToMailbox) { queue.AddToQueue( delegate { SendDataToMailbox(); }, true, 2 ); } else { queue.AddToQueue( delegate { additionalMotor.On((sbyte)(e.Progress - 100)); }, true, 2 ); } }; circle.Touch += delegate(object sender, View.TouchEventArgs e) { if (e.Event.Action == MotionEventActions.Up) { angleText.Text = "0.0"; speedText.Text = "0.0"; angle = 0.0f; speed = 0.0f; wasRunningForward = true; if (remoteSettings.SendVehicleDataToMailbox) { queue.AddToQueue( delegate { SendDataToMailbox(); }, true, 2 ); } else { queue.AddToQueue( delegate { brickController.NXT.Vehicle.Off(); }, true, 3 ); } circle.SetImageResource(Resource.Drawable.animation); circleAnimation = (AnimationDrawable)circle.Drawable; circleAnimation.Start(); } if (e.Event.Action == MotionEventActions.Move || e.Event.Action == MotionEventActions.Down) { //movingOnCircle = true; if (diameter == 0) { diameter = circle.Width / 2; } x = e.Event.GetX() - diameter; y = -(e.Event.GetY() - diameter); float outside = diameter * (float)1.06; if (!(x > outside || x < -outside || y > outside || y < -outside)) { if (x > 0.0) { angle = Math.Atan(y / x); if (y < 0.0) { angle = Math.Atan(y / x) + 2 * Math.PI; } } else { angle = Math.Atan(y / x) + Math.PI; } angle = angle + remoteSettings.DegreeOffset; //convert radians to degree angle = (angle * (180.0 / Math.PI)) % 360; speed = (float)Math.Sqrt(x * x + y * y); speed = speed / diameter * 100; if (speed > 100.0) { speed = (float)100.0; } } else { speed = 0.0f; angle = 0.0f; } int intSpeed = (int)speed; Activity.RunOnUiThread(delegate() { if (intSpeed < 10) { circle.SetImageResource(Resource.Drawable.ani0); } else if (intSpeed < 20) { circle.SetImageResource(Resource.Drawable.ani1); } else if (intSpeed < 30) { circle.SetImageResource(Resource.Drawable.ani2); } else if (intSpeed < 40) { circle.SetImageResource(Resource.Drawable.ani3); } else if (intSpeed < 50) { circle.SetImageResource(Resource.Drawable.ani4); } else if (intSpeed < 60) { circle.SetImageResource(Resource.Drawable.ani5); } else if (intSpeed < 70) { circle.SetImageResource(Resource.Drawable.ani6); } else if (intSpeed < 80) { circle.SetImageResource(Resource.Drawable.ani7); } else if (intSpeed < 90) { circle.SetImageResource(Resource.Drawable.ani8); } else { circle.SetImageResource(Resource.Drawable.ani9); } circleAnimation.Stop(); //angleText.Text = "Angle: " + string.Format("{0,5:###.0}", angle).PadLeft(7); //speedText.Text = "Speed: " + string.Format("{0,5:###.0}", speed).PadLeft(7); angleText.Text = string.Format("{0,5:###.0}", angle); speedText.Text = string.Format("{0,5:###.0}", speed); }); if (remoteSettings.SendVehicleDataToMailbox) { queue.AddToQueue( delegate { SendDataToMailbox(); }, true, 2 ); } else { queue.AddToQueue( delegate { if (angle >= 10.0f && angle < 80.0f) { brickController.NXT.Vehicle.TurnLeftForward((sbyte)speed, (sbyte)(100.0f - (angle - 10.0f) / 70.0f * 100.0f)); wasRunningForward = true; return; } if (angle >= 100.0f && angle < 170.0f) { brickController.NXT.Vehicle.TurnLeftReverse((sbyte)speed, (sbyte)(100.0f - (170 - (angle - 10.0f)) / 70.0f * 100.0f)); wasRunningForward = false; return; } if (angle >= 190.0f && angle < 260.0f) { brickController.NXT.Vehicle.TurnRightReverse((sbyte)speed, (sbyte)(100.0f - ((angle - 10.0f) - 190) / 70.0f * 100.0f)); wasRunningForward = false; return; } if (angle >= 280.0f && angle <= 350.0f) { brickController.NXT.Vehicle.TurnRightForward((sbyte)speed, (sbyte)(100.0f - (350 - (angle - 10.0f)) / 70.0f * 100.0f)); wasRunningForward = true; return; } if ((angle < 10.0f && angle >= 0.0f) || (angle > 350.0f)) { brickController.NXT.Vehicle.Forward((sbyte)speed); return; } if (angle >= 170.0f && angle < 190.0f) { brickController.NXT.Vehicle.Backward((sbyte)speed); return; } if (angle >= 80.0f && angle < 100.0f) { if (wasRunningForward) { brickController.NXT.Vehicle.SpinLeft((sbyte)speed); } else { brickController.NXT.Vehicle.SpinRight((sbyte)speed); } return; } if (angle >= 260.0f && angle < 280.0f) { if (wasRunningForward) { brickController.NXT.Vehicle.SpinRight((sbyte)speed); } else { brickController.NXT.Vehicle.SpinLeft((sbyte)speed); } return; } }, true, 3 ); } } }; circleAnimation.Start(); }