Ejemplo n.º 1
0
        public void setText2(Object obj)
        {
            progressValue pv = (progressValue)obj;

            Monitor.Enter(pv);
            //if (pv.v1 == pv.v2)
            {
                // progressValue pv = new progressValue(progressBar1.Value, progressBar2.Value);

                Monitor.PulseAll(pv);
                if (Monitor.Wait(pv, 1000))
                {
                    if (progressBar2.Value < progressBar2.Maximum)
                    {
                        progressBar2.PerformStep();
                        pv.v2 = progressBar2.Value;
                    }
                    ;

                    listBox1.Items.Add(progressBar2.Name + " Step:" + Convert.ToString(progressBar2.Value));
                    listBox1.Refresh();
                }
            }
            Monitor.Exit(pv);
        }
Ejemplo n.º 2
0
        public void setText1(Object obj)
        {
            // while (progressBar1.Value < progressBar2.Value)
            // {
            //progressValue pv = new progressValue(progressBar1.Value, progressBar2.Value);
            progressValue pv = (progressValue)obj;

            Monitor.Enter(pv);
            //
            while (pv.v1 < pv.v2)
            {
                Monitor.Wait(pv);
                if (progressBar1.Value < progressBar1.Maximum)
                {
                    progressBar1.PerformStep();
                    pv.v1 = progressBar1.Value;
                }
                ;
                listBox1.Items.Add(progressBar1.Name + " Step:" + Convert.ToString(progressBar1.Value));
                listBox1.Refresh();
                Monitor.PulseAll(pv);
            }
            listBox1.Items.Add(progressBar1.Name + " Step Comlete:" + Convert.ToString(progressBar1.Value));
            listBox1.Refresh();
            //
            Monitor.Exit(pv);
            // }
        }
Ejemplo n.º 3
0
        private void button1_Click(object sender, EventArgs e)
        {
            listBox1.Items.Add("Main Thread Start");
            listBox1.Refresh();
            t1 = null;
            t2 = null;
            progressValue pv2 = new progressValue(progressBar1.Value, progressBar2.Value);

            t1      = new Thread(new ParameterizedThreadStart(play1));
            t1.Name = "線程1";
            t1.Start(pv2);

            //
            t2      = new Thread(new ParameterizedThreadStart(play2));
            t2.Name = "線程2";
            t2.Start(pv2);
            //Monitor.TryEnter();
            //t1.Join();

            /*
             * int i = 0;
             * while (i<10) {
             *   listBox1.Items.Add("Main Thread IDLE");
             *   listBox1.Refresh();
             *   Thread.Sleep(300);
             *   i++;
             * }
             */
        }