private void button4_Click(object sender, EventArgs e)
        {
            Mutex m = new Mutex();
            autoevent = new AutoResetEvent(false);
            Thread t = new Thread(delegate()
            {
                Thread.Sleep(500);
                for (int i = 0; i < 50000; i++)
                {
                    m.WaitOne();
                    try
                    {
                        label1.Invoke
                        (
                            (MethodInvoker)
                            delegate
                            {
                                label1.Text = i.ToString();
                            }
                        );
                    }
                    finally
                    {
                        m.ReleaseMutex();
                    }
                }
            });
            t.Start();
            Thread t2 = new Thread(delegate()
            {
                for (int i = 0; i < 50000; i++)
                {
                    m.WaitOne();
                    try
                    {
                        label1.Invoke((System.Action)delegate()
                        {
                            label1.Text = i.ToString();
                        });
                    }
                    finally
                    {
                        m.ReleaseMutex();
                    }
                }
            });
            t2.Start();
        }