日期:2014-05-20  浏览次数:20744 次

线程同步问题
线程A一直做一件事情。主界面线程如果要访问A对象中某个数据,要停止A线程的更新,避免我要读取的数据被A线程删除了。我做了个例子。但发现例子有问题。请您帮我调试一下,新建工程。WindowsApplication
以下是Form3.CS
using   System;
using   System.Collections.Generic;
using   System.ComponentModel;
using   System.Data;
using   System.Drawing;
using   System.Text;
using   System.Windows.Forms;
using   System.Threading;

namespace   LearnProject
{
        public   partial   class   Form3   :   Form
        {
                public   Form3()
                {
                        InitializeComponent();
                }

                private   void   Form3_Load(object   sender,   EventArgs   e)
                {
                        MyUpdate   =   new   MyUpdateDelegate(UpdateText);
                        System.Threading.Thread   th   =   new   System.Threading.Thread(new   System.Threading.ThreadStart(MyThreadProc));
                        ThreadRunEnable   =   true;
                        th.Start();
                }

                private   volatile   bool   ThreadRunEnable   =   false;
                private   void   MyThreadProc()
                {
                        const   string   strConst   =   "This   is   a   test   sentence. ";
                        int   i   =   0,istrLen   =   strConst.Length;
                        try
                        {
                                while   (ThreadRunEnable   &&   i   <   int.MaxValue)
                                {
                                        System.Threading.Thread.Sleep(80);
                                        Monitor.Enter(Sync);
                                        this.Invoke(MyUpdate,   new   object[]   {   strConst[i   %   istrLen].ToString()   });
                                        Monitor.Exit(Sync);